找回密码
 立即注册

QQ登录

只需一步,快速开始

wangleiecho

中级会员

26

主题

94

帖子

658

积分

中级会员

积分
658

活字格认证

wangleiecho
中级会员   /  发表于:2012-3-29 14:57  /   查看:7969  /  回复:5
斑竹好,当farpoint处于编辑模式的时候我输入一个数字然后按下回车键,我想在keyDown里面捕捉到我按下的回车键,可是第一是捕捉不到的,第一次回车键应该是被系统捕捉了(系统用来把它作为退出编辑模式了)。请问怎么样可以在编辑模式下 第一次按下回车键就直接能被keyDown事件捕获?

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-29 15:18:00
沙发
在Spread中编辑和非编辑模式下Enter事件都是作为一个内置事件,当在编辑状态下通过Spread是不会触发KeyDown事件的,而此时应该触发Spread中Editor的KeyDown事件,代码如下:
  1. private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();

  4.         // 取消Spread中Enter键的默认处理事件
  5.         im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  6.         im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
  7.     }
  8.     private void fpSpread1_EditModeOn(object sender, EventArgs e)
  9.     {
  10.         FarPoint.Win.Spread.CellType.GeneralEditor ge = fpSpread1.EditingControl as FarPoint.Win.Spread.CellType.GeneralEditor;
  11.         if (ge != null)
  12.         {
  13.             // 添加编辑状态下的自定义事件
  14.             ge.KeyDown += new KeyEventHandler(ge_KeyDown);
  15.         }
  16.     }

  17.     void ge_KeyDown(object sender, KeyEventArgs e)
  18.     {
  19.         System.Diagnostics.Debug.WriteLine("ge_KeyDown" + DateTime.Now.Millisecond.ToString());
  20.     }
复制代码
回复 使用道具 举报
wangleiecho
中级会员   /  发表于:2012-3-29 15:50:00
板凳
好的 多谢版主
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-29 15:52:00
地板

回复 2# dof 的帖子

:strong:
回复 使用道具 举报
ycak47
注册会员   /  发表于:2012-3-31 13:32:00
5#

回复 2# dof 的帖子

你好,有没有vb版本的例子?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-31 17:17:00
6#

回复 5# ycak47 的帖子

ycak47  你好,VB 代码如下:
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         Dim im As New FarPoint.Win.Spread.InputMap()
  3.         ' 取消Spread中Enter键的默认处理事件
  4.         im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  5.         im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
  6.     End Sub
  7.     Private Sub FpSpread1_EditModeOn(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
  8.         Dim ge As FarPoint.Win.Spread.CellType.GeneralEditor = TryCast(FpSpread1.EditingControl, FarPoint.Win.Spread.CellType.GeneralEditor)
  9.         If ge IsNot Nothing Then
  10.             ' 添加编辑状态下的自定义事件
  11.             AddHandler ge.KeyDown, AddressOf ge_KeyDown
  12.         End If
  13.     End Sub
  14.     Private Sub ge_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
  15.         System.Diagnostics.Debug.WriteLine("ge_KeyDown" & DateTime.Now.Millisecond.ToString())
  16.     End Sub
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部