我正在使用C#
和Windows Forms
,并且想将Ctrl+"Oemplus"
用作我的应用程序的功能key
。我使用German keyboard
,此键位于字母P右边的2个键(即“ +”)。每当我按下此键和Ctrl
并将焦点放在TextBox
上时,我都会发出蜂鸣声。
当我切换到US keyboard
布局(仍然使用我的German keyboard
)时,也会发生这种情况。这就是] key
。
在Internet Explorers
地址栏中按此键时,也会发生同样的情况。
我的问题是:
为什么此组合键会在TextBox中产生提示音。
如何避免发出哔声?
感谢您为此付出的任何努力。
更新:
我在美国/泰国键盘上尝试过它,并且也听到了提示音。无论我使用哪种逻辑键盘布局(德国,美国,泰国),都会发生这种情况。
该提示音也会在Windows资源管理器中的地址栏中出现,但不会在搜索框中出现。
最佳答案
我相信正在发生的事情是,文本框不允许使用组合键,因此会出现错误。您可以通过以下代码(在EN Windows中使用右括号键)来测试键组合,它使用SuppressKeyPress防止键组合传递到基础控件以防止发出蜂鸣声。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (ModifierKeys == Keys.Control)
if (e.KeyValue == 221) // You may need to determine this value for your keyboard layout.
{
textBox1.Text += " + "; // Handle the Key combination.
e.SuppressKeyPress = true; // Prevents key from being passed to underlying control
}
}