2014-04-24 122 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;