我正在使用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
        }

}

10-03 00:08