在keydown事件中传递False键值
本文关键字:False 键值 keydown 事件 | 更新日期: 2023-09-27 17:53:02
我有一个MDI父表单。当用户按Enter键时,我希望应用程序关闭。
我检查keydown事件如下:
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == (int)Keys.Enter)
{
Application.Exit();
}
}
现在它工作得很好,当我没有任何可点击的窗体控件(按钮,文本框等)。e.KeyValue
对应"Enter Key(13)"的"(int)
"值。但是如果我把一些按钮或文本框放在MDI表单上,e.KeyValue
带来了Alt
Key的键值,即18。为什么?
现在如果我按下Alt+Enter
,窗体关闭;而不仅仅是回车键
Thanks in advance
您需要更快地处理KeyPress。下面的代码将为您工作:
protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
{
int _ENTER = 13;
int _KEYUP = 257;
if (m.Msg == _ENTER && (int)m.WParam == _KEYUP)
{
Application.Exit();
}
return base.ProcessKeyPreview(ref m);
}
使用e.KeyCode and e.Modifiers;