找回密码
 立即注册

QQ登录

只需一步,快速开始

laonawuli

银牌会员

39

主题

146

帖子

3383

积分

银牌会员

积分
3383

活字格认证

laonawuli
银牌会员   /  发表于:2011-10-29 11:55  /   查看:7270  /  回复:5
private void fpFilter_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                SeletctItem();
            else if (e.KeyCode == Keys.Escape)
                Hide();
            else if (e.KeyCode == Keys.Back)
            {
                SendKeys.Send("{Backspace}");
            }
        }

其他按键都可以捕获,就是 else if (e.KeyCode == Keys.Escape) 捕获不到,为什么呢?

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-10-31 10:52:00
沙发

回复 1# laonawuli 的帖子

你好, Escape 是 Spread 默认快捷键,所以 Escape 不会触发 KeyDown 事件,如果想获取 Escape KeyDown 事件,可以进行如下设置:

  1. FarPoint.Win.Spread.InputMap im = this.fpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused);
  2. im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Escape, Keys.None), FarPoint.Win.Spread.SpreadActions.None) ;
复制代码
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-10-31 12:43:00
板凳
原帖由 iceman 于 2011-10-31 10:52:00 发表
你好, Escape 是 Spread 默认快捷键,所以 Escape 不会触发 KeyDown 事件,如果想获取 Escape KeyDown 事件,可以进行如下设置:[code]
FarPoint.Win.Spread.InputMap im = this.fpSpread1.GetInputMap(InputMapMode.Wh......

搞定!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-31 13:08:00
地板

回复 3# laonawuli 的帖子

:v:
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-2 10:48:00
5#
原帖由 iceman 于 2011-10-31 13:08:00 发表
:v:


iceman~还是关于事件的问题,我发现如果在一个事件中,设置
               e.SuppressKeyPress = true;
                e.Handled = true;
之后,紧接着show一个Dialog 或者MessageBox,会导致      
              e.SuppressKeyPress = true;
                e.Handled = true; 失效。

FarPoint里面是这样,其他的控件也是这样,你可以用下面这个代码试验一下,当你输入一个空格在这个textbox中,然后执行       e.SuppressKeyPress = true;
                e.Handled = true;
如果没有下面那个messagebox,那么空格是不会被输入进去的;但是一旦show了messagebox,则空格会被输入进去。

怎么回事儿啊?

private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
                MessageBox.Show(e.KeyCode.ToString());
            }
        }
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-2 14:35:00
6#
你好,不好意思,这是 .NET 机制造成的,和 Spread 控件本身没有关系。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部