Procedura: Determinare quale tasto modificatore è stato premuto
Quando si crea un'applicazione che accetta le sequenze di tasti dell'utente, si può anche voler monitorare i tasti modificatori, come MAIUSC, ALT e CTRL. Quando un tasto di modifica viene premuto in combinazione con altri tasti o con clic del mouse, l'applicazione può rispondere in modo appropriato. Ad esempio, se viene premuta la lettera S, è possibile che venga visualizzata semplicemente una "s" sullo schermo, ma se i tasti CTRL+S vengono premuti, è possibile salvare il documento corrente. Se si gestisce l'evento KeyDown, la proprietà Modifiers del KeyEventArgs ricevuto dal gestore eventi specifica quali tasti di modifica vengono premuti. In alternativa, la proprietà KeyData di KeyEventArgs specifica il carattere premuto, nonché qualsiasi tasto di modifica combinato con un OR bit per bit. Tuttavia, se si gestisce l'evento KeyPress o un evento del mouse, il gestore eventi non riceve queste informazioni. In questo caso, è necessario utilizzare la proprietà ModifierKeys della classe Control. In entrambi i casi, è necessario eseguire un AND bit a bit del valore Keys appropriato e del valore di cui si esegue il test. L'enumerazione Keys offre variazioni di ogni tasto modificatore, quindi è importante effettuare un'operazione di AND bit a bit con il valore corretto. Ad esempio, il tasto MAIUSC è rappresentato da Shift, ShiftKey, RShiftKey e LShiftKey Il valore corretto per testare MAIUSC come tasto di modifica è Shift. Analogamente, per verificare la ricerca di CTRL e ALT come modificatori, è consigliabile usare rispettivamente i valori Control e Alt.
Nota
I programmatori di Visual Basic possono anche accedere alle informazioni chiave tramite la proprietà Keyboard
Per determinare quale tasto di modifica è stato premuto
Utilizzare l'operatore bitwise
AND
con la proprietà ModifierKeys e un valore dell'enumerazione Keys per determinare se viene premuto un particolare tasto modificatore. Nell'esempio di codice seguente viene illustrato come determinare se il tasto MAIUSC viene premuto all'interno di un gestore eventi 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
Vedere anche
.NET Desktop feedback