R – Stop the Bell on CTRL-A (WinForms)

keyeventargswinforms

Any ideas how to stop the system bell from sounding when CTRLA is used to select text in a Winforms application?

Here's the problem. Create a Winforms project. Place a text box on the form and add the following event handler on the form to allow CTRLA to select all the text in the textbox (no matter which control has the focus).

void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
    {
        System.Diagnostics.Debug.WriteLine("Control and A were pressed.");
        txtContent.SelectionStart = 0;
        txtContent.SelectionLength = txtContent.Text.Length;
        txtContent.Focus();
        e.Handled = true;
    }
}

It works, but despite e.Handled = true, the system bell will sound every time CTRLA is pressed.


Thanks for the reply.

KeyPreview on the Form is set to true – but that doesn't stop the system bell from sounding – which is the problem I'm trying to solve – annoying.

Best Answer

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.KeyCode == Keys.A)
        {
            this.textBox1.SelectAll();
            e.SuppressKeyPress = true;
        }
    }

hope this helps