2009-07-17 45 views

Respuesta

15
bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control); 
5

Si desea detectar en un controlador de pulsación de tecla, que se vería en las propiedades modificadoras:

private void button1_KeyPress(object sender, 
           System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control) 
    { 
    MessageBox.Show("Pressed " + Keys.Control); 
    } 
} 

En realidad, mirando y viendo que no utiliza el argumento e, se parece que mientras su "esto" se derive de un Formulario o Control, entonces puede realizar esta llamada en cualquier momento y no solo en un controlador de eventos de teclado.

Sin embargo, si se quería garantizar una combinación, como Ctrl - Un se ha pulsado, se necesitaría alguna lógica adicional.

private void myKeyPress(object sender, 
         System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
     && e.KeyChar == 'A') 
    { 
    SelectAll(); 
    } 
} 
1

Adición de una respuesta tardía a una vieja pregunta ...

Las otras respuestas para leer el estado actual de la tecla de control. Si quiere leer directamente el indicador de control de los argumentos de eventos pasados ​​(es decir, como lo fue en el momento en que ocurrió el evento), o bien utilizar los KeyUp o KeyDown eventos (no KeyPress):

private void HandleTextKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.A) 
    { 
     ((TextBox)sender).SelectAll(); 
     e.Handled = true; 
    } 
} 
Cuestiones relacionadas