避免在C#winform的键盘快捷方式上发出警报

我正在使用Visual Studio 2012在C#中创建Winform应用程序的键盘快捷方式。我的快捷方式非常完美。 但它会发出恼人的哔哔声。

我添加了e.Handled = true;e.SuppressKeyPress = true; 根据许multithreading。 但它不起作用,我的winform卡住了。

我怎么能避免这个?

 private void textBoxSearch_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Down) { do stuff } else if (e.KeyCode == Keys.Enter) { //do stuff } e.Handled = true; e.SuppressKeyPress = true; } 

我也需要一个解决方案。

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.F)) { //do stuff } else if (keyData == (Keys.Control | Keys.G)) { //do stuff } return base.ProcessCmdKey(ref msg, keyData); } 

你在KeyDown事件中的作用应该有效。 当我复制你的代码时,SupressKeyPress = true停止了我的命令。

在ProcessCmdKey事件中,您需要这样:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.F)) { //do stuff return; } else if (keyData == (Keys.Control | Keys.G)) { //do stuff return; } return base.ProcessCmdKey(ref msg, keyData); }