KeyPress and KeyDown events

本文关键字:events KeyDown and KeyPress | 更新日期: 2023-09-27 18:00:09

你好,我正在尝试在WF中制作一个使用KeyPress事件的程序。我写了以下代码:

 private void Form1_KeyPress(object sender, KeyPressEventArgs e)
   {
     while (true)
     {
         switch (e.KeyChar)
         {
                    case (char)68:
                        MessageBox.Show("Test");
                        break;
         }
      }
}

但当我执行程序并按键时,消息框不会出现;t出现。有人有什么建议或知道如何解决这个问题吗?我也被告知KeyDown事件可以工作,但我也不知道如何使用它们。

KeyPress and KeyDown events

不要在事件处理程序中使用while(true)。它将无限循环。

只做

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    switch (e.KeyChar)
    {
        case (char)68:
            MessageBox.Show("Test");
            break;
    }
}

此外,将按下的键与实际字符进行比较似乎比ASCII代码更干净:

    switch (e.KeyChar)
    {
        case 'D':
            MessageBox.Show("Test");
            break;
    }

您需要设置Form.KeyPreview

例如。以您的形式

this.KeyPreview =true;