禁用进入和退出键c#的蜂鸣声

我想禁用当我在textbox输入时得到的哔声。 我的KeyDown事件是:

  private void textBox_Zakljucak_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Tab)) { Parent.SelectNextControl(textBox_Zakljucak, true, true, true, true); } else if ((e.KeyCode == Keys.Back)) { textBox_Zakljucak.Select(textBox_Zakljucak.Text.Length, 0); } else if (!Regex.IsMatch(textBox_Zakljucak.Text, @"^[0-9.-]+$")) { textBox_Zakljucak.Clear(); textBox_Zakljucak.Select(textBox_Zakljucak.Text.Length, 0); } } 

你必须阻止生成KeyPressed事件,那就是发出哔哔声的事件。 这需要将SuppressKeyPress属性设置为true。 使它看起来类似于:

  if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Tab)) { Parent.SelectNextControl(textBox_Zakljucak, true, true, true, true); e.Handled = e.SuppressKeyPress = true; } 

如果要防止事件在Winforms或WPF / Silverlight中冒泡,则需要在事件处理程序中将e.Handled设置为true

只有在您实际处理完事件并且不希望对相关事件进行进一步处理的情况下才能执行此操作。

这对我有用。

 private void txtTextbox_KeyDown(object sender, KeyEventArgs e) { //do somthing if(e.KeyCode==Keys.Enter) { e.Handled=true; e.SuppressKeyPress=true; } } private void txtTextbox_KeyUp(object sender, KeyEventArgs e) { e.Handled=false; e.SuppressKeyPress=false; } 
  private void txtMessage_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.SuppressKeyPress = true; _sendMessage.PerformClick(); } } 

在这里运行VS 2015以及上述答案对我来说不起作用。 为了抑制硬回车上的嘟嘟声(在文本框和复选框中),我从KeyDown事件切换到KeyPress事件并执行以下操作:

 private void mTxtSrchStr1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { this.sSearchFind(); e.Handled = true; } } 

KeyPress事件中没有e.SuppressKeyPress,但在那里不需要它。