Como determinar qual tecla modificadora foi pressionada
Quando você cria um aplicativo que aceita os pressionamentos de tecla do usuário, talvez você também queira monitorar as chaves modificadoras, como as teclas SHIFT, ALT e CTRL. Quando uma tecla modificadora é pressionada em combinação 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 com que um "s" apareça na tela, mas se as teclas CTRL+S forem pressionadas, o documento atual poderá ser salvo. Se você manipular o evento KeyDown, a propriedade Modifiers da KeyEventArgs recebida pelo manipulador de eventos especifica quais teclas modificadoras são pressionadas. Como alternativa, a propriedade KeyData de KeyEventArgs especifica o caractere que foi pressionado, bem como quaisquer teclas modificadoras combinadas com um OR bit a bit. No entanto, se você estiver tratando o evento KeyPress ou um evento do mouse, o manipulador de eventos não receberá essas informações. Nesse caso, você deve usar a propriedade ModifierKeys da classe Control. Em ambos os casos, você deve executar um AND bit a bit do valor de Keys apropriado e do valor que você está testando. A enumeração Keys oferece variações de cada chave modificadora, portanto, é importante que você execute o AND bit a bit com o valor correto. Por exemplo, a chave SHIFT é representada por Shift, ShiftKey, RShiftKey e LShiftKey O valor correto para testar SHIFT como uma chave modificadora é Shift. Da mesma forma, para testar CTRL e ALT como modificadores, você deve usar os valores Control e Alt, respectivamente.
Nota
Os programadores do Visual Basic também podem acessar informações importantes por meio da propriedade Keyboard
Para determinar qual tecla modificadora foi pressionada
Use o operador bitwise
AND
com a propriedade ModifierKeys e um valor da enumeração Keys 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 eventos KeyPress.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
Consulte também
.NET Desktop feedback