2015-08-20 114 views
0

我有一个WinForm应用程序,我很想用转义按钮关闭控件。我在KeyPress上创建了一个事件,当我使用除Escape之外的其他任何键时,此功能都可以使用。KeyEventArgs没有响应按退出按钮

private void ProductsView_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char) Keys.B || e.KeyChar == (char)Keys.Escape) 
    { 
     //Magic happens 
    } 
} 

如果我按“B”一切正常,但如果我按“退出”,该事件不会触发(是的,我的退出按钮的作品)。 我不知道什么可能会导致此问题,我也尝试KeyUp & KeyDown事件。

+0

使用'KeyDown'或'KeyUp'代替。 –

回答

0

您可以创建嵌套的控制和超越的方法ProcessCmdKey:

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) 
    { 
     switch (keyData) 
     { 
      case System.Windows.Forms.Keys.Escape: 
      { 
       //...magic 
      } 
     } 
    } 
+0

感谢您的快速响应! 这解决了我的问题,你是一个拯救生命的人! ;) – methgaard

+0

@methgaard我很高兴看到这个:)你能接受我的答案吗? – Backs