Como determinar qual tecla modificadora foi pressionada
Quando você cria um aplicativo que aceita a digitação do usuário, também é recomendável monitorar as teclas modificadoras como SHIFT, ALT e CTRL. Quando uma tecla modificadora for pressionada junto com outras teclas, ou com cliques do mouse, seu aplicativo pode responder adequadamente. Por exemplo, se a letra S for pressionada, isso poderá simplesmente fazer um “s” aparecer na tela, mas se as teclas CTRL + S forem pressionadas, o documento atual poderá ser salvo. Se você manipular o KeyDown evento, a Modifiers propriedade do recebido pelo manipulador de KeyEventArgs eventos especificará quais teclas modificadoras serão pressionadas. Como alternativa, a propriedade de KeyEventArgs especifica o caractere que foi pressionado, bem como quaisquer teclas modificadoras combinadas com um OR bit a KeyData bit. No entanto, se você estiver manipulando o evento ou um evento de mouse, o KeyPress manipulador de eventos não receberá essas informações. Nesse caso, você deve usar a ModifierKeys Control propriedade da classe. Em ambos os casos, você deve executar um bit a bit AND do valor apropriado Keys e do valor que você está testando. A Keys enumeração oferece variações de cada chave modificadora, portanto, é importante que você execute o bit a bit AND com o valor correto. Por exemplo, a tecla SHIFT é representada por Shift, ShiftKeyRShiftKey e LShiftKey O valor correto para testar SHIFT como uma tecla modificadora é Shift. Da mesma forma, para testar CTRL e ALT como modificadores, você deve usar os Control valores e Alt , respectivamente.
Observação
Programadores do Visual Basic também podem acessar informações de chave através da Keyboard propriedade
Determinar qual tecla modificadora foi pressionada
Use o operador bit a bit
AND
com a ModifierKeys propriedade e um valor da Keys enumeração para determinar se uma tecla modificadora específica é pressionada. O exemplo de código a seguir mostra como determinar se a tecla SHIFT é pressionada dentro de um manipulador de KeyPress eventos.private: void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e) { if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift) { MessageBox::Show("Pressed " + Keys::Shift.ToString()); } }
public void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { MessageBox.Show("Pressed " + Keys.Shift); } }
Public Sub TextBox1_KeyPress(ByVal sender As Object, _ ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then MsgBox("Pressed " + Keys.Shift.ToString()) End If End Sub
Confira também
.NET Desktop feedback