找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2012-3-12 18:27:00
11#

回复 10# lzh3452 的帖子

你好,该问题均使用 Spread for WinForm 3.0 测试。需要使用代码添加,添加方式,
  1.             this.fpSpread1.TopChange+=new FarPoint.Win.Spread.TopChangeEventHandler(fpSpread1_TopChange);
复制代码
回复 使用道具 举报
lzh3452
论坛元老   /  发表于:2012-3-13 11:04:00
12#
不是这个,这个事件我有看到,但是MouseWheel这个事件没有。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-13 11:23:00
13#

回复 12# lzh3452 的帖子

lzh3452 你好,改事件添加的方法为:
  1. this.fpSpread1.MouseWheel += new MouseEventHandler(fpSpread1_MouseWheel);
复制代码
添加成功会自动生成:

  1.         void fpSpread1_MouseWheel(object sender, MouseEventArgs e)
  2.         {
  3.             throw new NotImplementedException();
  4.         }

复制代码
回复 使用道具 举报
lzh3452
论坛元老   /  发表于:2012-3-13 12:03:00
14#

回复 13# iceman 的帖子

这效果太不好了!如果是在第一页,向上滚动就不会触发TopChange。还有我说的滚轮按下和右键点击,焦点没有移动,只触发了EditModeOff事件,根本没法取消啊!
回复 使用道具 举报
lzh3452
论坛元老   /  发表于:2012-3-13 15:57:00
15#

回复 13# iceman 的帖子

有没有什么方法,让滚轮无效?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-13 17:52:00
16#

回复 15# lzh3452 的帖子

lzh3452 你好,
现在的方法是使用 UserControl 继承 FpSpread,在 UserControl 中重载 OnMouseWheel 事件,使其无效:
  1.     public partial class UserControl1 : FarPoint.Win.Spread.FpSpread
  2.     {
  3.         public UserControl1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.         protected override void OnMouseWheel(MouseEventArgs e)
  8.         {
  9.         }
  10.     }
复制代码
回复 使用道具 举报
lzh3452
论坛元老   /  发表于:2012-3-13 18:10:00
17#

回复 16# iceman 的帖子

:t( 终于搞定了!!!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-14 10:53:00
18#

回复 17# lzh3452 的帖子

lzh3452 你好,
光标进入单元格之后,我们操作的对象为 Editor,TextCellType、GeneralCellType 的Editor 都为标准控件 TextBox。所以目前的问题就转化为 怎样去屏蔽 TextBox 的右键菜单。目前找到屏蔽右键菜单的方法为:

  1.     class MyTextCellType : FarPoint.Win.Spread.CellType.TextCellType
  2.     {
  3.         TextBox textbox = new TextBox();
  4.         ContextMenu screenMenu = new ContextMenu();

  5.         public override Control GetEditorControl(Control parent, FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
  6.         {
  7.             textbox.BackColor = System.Drawing.Color.Red;
  8.             textbox.ContextMenu = screenMenu;
  9.             return textbox;
  10.         }
  11.     }
复制代码
如果楼主有更好的方法,请通知我们,谢谢。
回复 使用道具 举报
lzh3452
论坛元老   /  发表于:2012-3-19 08:44:00
19#

回复 18# iceman 的帖子

因为我本来就是继承了Spread做的一个共通的Spread控件,所以重写事件更为容易。你的方法虽然看上去是屏蔽了事件,但事实上,鼠标是在动的,不一定要在焦点Cell里点,而且在里面点的话,弹出菜单并不影响我的操作。我的方法是重写了OnMouseDown事件,如果EditMode=true,则返回,否则调用Base的OnMouseDown。其实主要的问题是,在Spread其他地方点击鼠标,会使当前的焦点Cell退出编辑模式,和弹不弹Menu没什么太大关系。我的目的就是,除非这个Cell用户输入正确,否则就不能离开。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-19 13:05:00
20#

回复 19# lzh3452 的帖子

:strong: 感谢把解决方案反馈给我们~
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部