在文本框中使用ctrl + A时播放Windows“ding”声音(C#)

时间:2011-03-10 21:56:31

标签: c# textbox keydown

当Control设置为True时,通过在文本框的KeyDown事件中监听“A”按键,可以轻松创建支持“ctrl + A”(全选)的文本框。满足此条件时,文本框会执行如下调用:

textBox1.Select(0, textBox1.Text.Length);
textBox1.ScrollToCaret();

“全部选择”功能运行得很好,除了我在使用应用程序时实际在文本框中输入ctrl + A时听到窗口“叮”声。我无法弄清楚原因。

2 个答案:

答案 0 :(得分:3)

至少在带有 Windows窗体 Windows XP SP3 上,同样的事情发生在我身上(真的很烦人)。

即使没有任何事件处理程序,也会播放“叮”声。多线和其他设置(预览,输入键等)也没有效果。

我使用这个事件处理程序来摆脱它:

public static void TextBoxSelectAll(object sender, KeyEventArgs e)
{
    if (e.KeyData == (Keys.Control | Keys.A))
    {
        ((TextBox)sender).SelectAll();

        e.SuppressKeyPress = true;
        e.Handled = true;
    }
}

答案 1 :(得分:0)

ding声音表示发生了错误,所以我的猜测是这行代码导致了问题:

textBox1.Select(0, textBox1.Text.Length);

因为它是0计数,你真的想滚动到textBox1.Text.Length - 1。 (不过我猜了一下。而且,正如丹尼尔所说,这个功能已经内置......不需要实现它!)

修改 - 当文本框处于多行模式时,会出现问题(如here所述)。点击链接以解决问题。