2008-10-22 9 views
13

¿Alguna idea de cómo detener la campana del sistema de sonar cuando CTRL - Un se utiliza para seleccionar texto en una aplicación Windows Forms?Stop the Bell en CTRL-A (WinForms)

Aquí está 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 CTRL - A para seleccionar 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 CTRL - Un se presiona.


Gracias por la respuesta.

TeclaDePresentaciónPreliminar en el formulario se establece en true - pero eso no impide que la campana del sistema de sonar - que es el problema que estoy tratando de resolver - molesto.

Respuesta

1

Esto funcionó para mí:

Establecer la TeclaDePresentaciónPreliminar en el formulario en True.

Espero que ayude.

6

Gracias a un puesto de MSDN Foro - este problema sólo se produce cuando los cuadros de texto están en modo multilínea y que le gustaría poner en práctica Ctrl +Un para seleccionar todos.

Aquí está la solución de

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); 
} 
21
private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.A) 
     { 
      this.textBox1.SelectAll(); 
      e.SuppressKeyPress = true; 
     } 
    } 

esperanza esto ayuda

1

@ H7O solución es buena, pero he mejorado un poco para los componentes de cuadro de texto se multiplican en el formulario.

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