C#:Conseguir la correcta presionando teclas de KeyEventArgs' KeyData
-
21-08-2019 - |
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.
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