winforms keyeventargs

Detener la campana en CTRL-A(WinForms)



keyeventargs (4)

Esto funcionó para mí:

Establezca KeyPreview en el formulario en True.

Espero que ayude.

¿Alguna idea de cómo evitar que suene la campana del sistema cuando se usa CTRL - A para seleccionar texto en una aplicación de Winforms?

Este es el problema. Crea un proyecto de Winforms. Coloque un cuadro de texto en el formulario y agregue el siguiente controlador de eventos en el formulario para permitir que CTRL - A seleccione todo el texto en el cuadro de texto (sin importar qué control tenga el foco).

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; } }

Funciona, pero a pesar de e.Handled = true, la campana del sistema sonará cada vez que se presione CTRL - A.

Gracias por la respuesta.

KeyPreview en el Formulario se establece en verdadero, pero eso no detiene el sonido del timbre del sistema, que es el problema que trato de resolver, molesto.


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

espero que esto ayude


La solución @ H7O es buena, pero la mejoré un poco para multiplicar los componentes de TextBox en el formulario.

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


Gracias a una publicación en el foro de MSDN, este problema solo ocurre cuando los cuadros de texto están en modo multilínea y desea implementar Ctrl + A para seleccionar todo.

Aquí está la solución

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.A | Keys.Control)) { txtContent.SelectionStart = 0; txtContent.SelectionLength = txtContent.Text.Length; txtContent.Focus(); return true; } return base.ProcessCmdKey(ref msg, keyData); }