Pregunta

Estoy reventado de un KeyDown evento y tengo que ser capaz de comprobar si la corriente de teclas presionadas hacia abajo son : Ctrl + Cambio + M ?


Yo sé que tengo que utilizar el e.KeyData a partir de la KeyEventArgs, el Keys enum y algo con Enum Indicadores y bits, pero no estoy seguro sobre cómo comprobar la combinación.

¿Fue útil?

Solución

Es necesario utilizar las modificadores propiedad de la clase KeyEventArgs.

Algo así como:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}

Otros consejos

Creo que es más fácil de usar esto:

if(e.KeyData == (Keys.Control | Keys.G))

Puede comprobar utilizando una técnica similar a la siguiente:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

Esto, en combinación con los controles normales clave le dará la respuesta que buscas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top