为什么在RichTextBox中KeyDown事件,不能处理Alt+S的情况?

weixin_38067327 2017-08-18 09:20:51
代码:
if (e.KeyboardDevice.Modifiers == ModifierKeys.Alt && e.Key == Key.S)
SendMessage();

不知道为什么我按下ALT+S的时候,SendMessage代码没有执行,电脑传出”叮”一声。。。
如果将Alt换成CTRL却可以,这是为什么?

da jia hao!
...全文
18 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38069045 2017-08-21
  • 打赏
  • 举报
回复

Hi liubin,
>>不知道为什么我按下ALT+S的时候,SendMessage代码没有执行,电脑传出”叮”一声。。。
如果将Alt换成CTRL却可以,这是为什么?
据我所致,在Alt修饰符的情况下,e.Key返回Key.System,真正的密钥在e.SystemKey中。 您可以使用以下代码来始终获得正确的按键:
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
你可以尝试下面的代码来捕获ALT组合事件
private void HandleKeyDownEvent(object sender, KeyEventArgs e) { if (e.Key == Key.S && (Keyboard.Modifiers & (ModifierKeys.Control)) == (ModifierKeys.Control)) { e.Handled = true; MessageBox.Show("Control + s trapped"); } if ((Keyboard.Modifiers & (ModifierKeys.Alt)) == (ModifierKeys.Alt)) { Key key = (e.Key == Key.System ? e.SystemKey : e.Key); if(key==Key.S) { e.Handled = true; MessageBox.Show("Alt + s trapped"); } } }


476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧