Procedura: determinare quale tasto di modifica è stato premuto
Quando si crea un'applicazione che accetta le sequenze di tasti dell'utente, è anche possibile monitorare i tasti di modifica, ad esempio 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 Modifiers proprietà dell'oggetto KeyEventArgs ricevuto dal gestore eventi specifica quali tasti di modifica vengono premuti. In alternativa, la KeyData proprietà 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 ModifierKeys proprietà della Control classe . In entrambi i casi, è necessario eseguire un AND bit per bit del valore appropriato Keys e il valore di cui si esegue il test. L'enumerazione Keys offre variazioni di ogni tasto di modifica, quindi è importante eseguire l'and bit per bit con il valore corretto. Ad esempio, il tasto MAIUSC è rappresentato da Shift, ShiftKeyRShiftKey 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 Control valori e Alt .
Nota
I programmatori di Visual Basic possono anche accedere alle informazioni chiave tramite la Keyboard proprietà
Per determinare quale tasto di modifica è stato premuto
Utilizzare l'operatore bit per
AND
bit con la ModifierKeys proprietà e un valore dell'enumerazione Keys per determinare se viene premuto un tasto modificatore specifico. Nell'esempio di codice seguente viene illustrato come determinare se il tasto MAIUSC viene premuto all'interno di un KeyPress gestore eventi.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
Vedi anche
.NET Desktop feedback