2014-04-24 87 views
0

你好,我正在尝试在使用KeyPress事件的WF中创建一个程序。 我已经写了下面的代码:KeyPress和KeyDown事件

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

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

+2

这是真正的代码?它会挂起你的应用程序而不依赖于实际的键。 – JeffRSon

回答

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; 
    } 
3

您需要设置Form.KeyPreview

例如 在您的形式

this.KeyPreview =true;