找回密码
 立即注册

QQ登录

只需一步,快速开始

mishidemayi

高级会员

8

主题

20

帖子

1044

积分

高级会员

积分
1044

活字格认证

mishidemayi
高级会员   /  发表于:2012-6-26 15:25  /   查看:6222  /  回复:5
我现在想要在选中特定的列时,按F4,弹出一个查询窗口。这个事件是什么啊?
试了KeyUp、keydown、keypress都不行啊。
1、只能捕获到普通输入,F4不会执行
2、当鼠标焦点进入表格里头的某一单元格后,输入也不会执行

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-26 16:19:00
沙发
Spread中默认情况已经对部分键盘事件进行了出来,如果你想自定义这些键盘事件,可以参考下面的两篇文章:
1、自定义输入映射  http://gcdn.grapecity.com/showtopic-4177.html
2、自定义键盘中上、下、左、右的事件  http://gcdn.grapecity.com/showtopic-4107.html
回复 使用道具 举报
mishidemayi
高级会员   /  发表于:2012-7-2 11:06:00
板凳
多谢了,下边是我的代码,好像不用想例子里写的那么多。例子里有些代码没看明白有什么用处  :-|

  1.             //表格F4按钮
  2.             FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
  3.             im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  4.             im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F4, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
复制代码

  1.         /// <summary>
  2.         /// 表格F4按钮
  3.         /// </summary>
  4.         /// <param name="keyData"></param>
  5.         /// <returns></returns>
  6.         protected override bool ProcessDialogKey(Keys keyData)
  7.         {

  8.             switch (keyData)
  9.             {
  10.                 case Keys.F4:
  11.                     DataRow[] drs;
  12.                     int _rowIndex = fpSpread1_Sheet1.ActiveRowIndex;
  13.                     switch (fpSpread1_Sheet1.ActiveColumnIndex)
  14.                     {
  15.                         case 2:
  16.                             Open_aply_item(); //执行的方法
  17.                             break;
  18.                         case 4:
  19.                             Open_aply_mth();//执行的方法
  20.                             break;
  21.                     }
  22.                     break;
  23.             }
  24.             return base.ProcessDialogKey(keyData);
  25.         }
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-2 13:33:00
地板
这两者代码结合在一块时,非编辑状态按F4可以触发Spread的KeyDown;编辑状态按F4会触发ProcessDialogKey。所以需要触发什么事件由你的需求而定。

添加以下代码主要是为了在非编辑状态下按F4之后触发Spread的KeyDown事件,只是Load中的代码设置时,在编辑状态下按F4时不会触发KeyDown事件:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         //表格F4按钮
  4.         FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
  5.         im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  6.         im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F4, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
  7.     }
复制代码


重写ProcessDialogKey之后,Spread处于编辑状态是按下F4,可以触发ProcessDialogKey
回复 使用道具 举报
mishidemayi
高级会员   /  发表于:2012-7-3 08:47:00
5#
哦    明白了
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-3 17:48:00
6#
呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部