编程语言
首页 > 编程语言> > c# – 为什么按Ctrl“”会在TextBox中产生一声蜂鸣声?

c# – 为什么按Ctrl“”会在TextBox中产生一声蜂鸣声?

作者:互联网

我正在使用C#和Windows Forms,并希望使用Ctrl“Oemplus”作为我的应用程序的功能键.我使用德语键盘,这个键位于字母P右侧的2个键(即“”).每当我与Ctrl结合使用此键并且焦点位于TextBox上时,我会发出一声哔哔声.
当我切换到美国键盘布局(仍使用我的德语键盘)时也会发生这种情况.这是关键.
在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
        }

}

标签:c,winforms,keyboard-shortcuts,keyboard-hook
来源: https://codeday.me/bug/20190715/1469513.html