C #: Como as teclas corretas pressionado a partir KeyData KeyEventArgs'
-
21-08-2019 - |
Pergunta
Eu estou prendendo um evento KeyDown
e eu preciso ser capaz de verificar se as chaves atuais pressionado para baixo são: Ctrl + Mudança + M ?
Eu sei que eu preciso para usar o e.KeyData
do KeyEventArgs
, a enumeração Keys
e algo com bandeiras e pedaços Enumerar mas não tenho certeza sobre como verificar para a combinação.
Solução
Você precisa usar o modificadores propriedade da classe KeyEventArgs.
Algo 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");
}
Outras dicas
Eu acho que é mais fácil de usar este:
if(e.KeyData == (Keys.Control | Keys.G))
Você pode verificar usando uma técnica semelhante à seguinte:
if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)
Este em combinação com os cheques-chave normais vai lhe dar a resposta que você procura.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow