2013-03-14 75 views
3

比方說,我有這樣的:KeyDown KeySuppress是否取消KeyUp事件?

private void txtAnalogValue_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      //Non-numeric key pressed => prevent this from being input into the Textbox 
      e.SuppressKeyPress = true; 
     } 
    } 

這:

​​

我知道這個代碼不使一個很大的意義,它只是測試。 問題是:KeyDown事件中的e.SuppressKeyPress = true是否會對KeyUp事件產生影響,因此Enter鍵將不被接受?

回答

2

不,e.SuppressKeyPress = true只會忽略Enter鍵(它不會進入下一行並且文本框的Text屬性不會被改變),並且e.Keycode將在KeyUp中可見。因此,禁止KeyDown中的密鑰不會影響KeyUp事件,並且您的代碼應該可以工作。當您按TextBox中的Enter按鈕時,將會調用UpdateState。您可以嘗試下面的代碼來檢查它:

 private void txtAnalogValue_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.A) 
      { 
       e.SuppressKeyPress = true; 
      } 
     } 

     private void txtAnalogValue_KeyUp(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.A) 
      { 
       MessageBox.Show("Up"); 
      } 
     } 
+0

謝謝。這回答了它。 – vidriduch 2013-03-22 11:04:39