我有一个MDI父窗体。当用户按Enter时,我希望应用程序关闭。
我检查keydown事件,如下所示:
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == (int)Keys.Enter)
{
Application.Exit();
}
}
现在,当我在窗体上没有任何可点击的控件(按钮、TextBox等)时,它可以很好地工作。e.KeyValue
的(int)
值为Enter键(13)。但是如果我将一些按钮或文本框放到MDI表单上,e.KeyValue
会带来Alt
键的键值,即18。为什么呢?
所以现在如果我按下Alt+Enter
,表单就会关闭;但不仅仅是按Enter键
提前感谢
发布于 2011-04-23 11:35:01
您需要更快地处理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);
}
发布于 2011-04-23 11:13:08
使用e.KeyCode and e.Modifiers;
https://stackoverflow.com/questions/5761877
复制相似问题