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.

Foi útil?

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
scroll top