KeyPress和KeyDown事件

时间:2014-04-24 15:03:47

标签: c# .net winforms visual-studio-2012

您好我正在尝试在WF中创建一个使用KeyPress事件的程序。 我写了以下代码:

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

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

2 个答案:

答案 0 :(得分:3)

您需要设置Form.KeyPreview

e.g。 在您的表格

this.KeyPreview =true;

答案 1 :(得分:3)

不要在事件处理程序中使用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;
    }