在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

在keydown事件中传递False键值

您需要更快地处理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;