Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando l'utente digita i tasti nella tua applicazione, puoi monitorare i tasti modificatori premuti, come ad esempio MAIUSC, ALTe CTRL. Quando si preme un tasto di modifica in combinazione con altri tasti o anche un clic del mouse, l'applicazione può rispondere in modo appropriato. Ad esempio, premendo il tasto S è possibile che venga visualizzata una "s" sullo schermo. Se i tasti CTRL+S vengono premuti, è possibile salvare il documento corrente.
Se si gestisce l'evento KeyDown, la proprietà KeyEventArgs.Modifiers ricevuta dal gestore eventi specifica quali tasti di modifica vengono premuti. Inoltre, la proprietà KeyEventArgs.KeyData specifica il carattere premuto insieme a qualsiasi tasto modificatore combinato con un'operazione OR a livello di bit.
Se si gestisce l'evento KeyPress o un evento del mouse, il gestore eventi non riceve queste informazioni. Utilizzare la proprietà ModifierKeys della classe Control per rilevare un modificatore di tasti. In entrambi i casi, è necessario eseguire un AND bit a bit del valore Keys appropriato e del valore che si sta testando. L'enumerazione Keys offre variazioni di ogni tasto di modifica, quindi è importante eseguire il controllo AND bit per bit con il valore corretto.
Ad esempio, i valori di chiave seguenti rappresentano il tasto MAIUSC :
Il valore corretto per testare MAIUSC come tasto modificatore è Keys.Shift. Analogamente, per testare CTRL e ALT come modificatori, è consigliabile utilizzare rispettivamente i valori Keys.Control e Keys.Alt.
Rilevare il tasto modificatore
Rilevare se viene premuto un tasto di modifica confrontando la proprietà ModifierKeys e il valore di enumerazione Keys con un operatore AND bit per bit.
Nell'esempio di codice seguente viene illustrato come determinare se il tasto SHIFT viene premuto all'interno degli gestori di eventi KeyPress e KeyDown.
// Event only raised when non-modifier key is pressed
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyPress " + Keys.Shift);
}
// Event raised as soon as shift is pressed
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyDown " + Keys.Shift);
}
' Event only raised when non-modifier key is pressed
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
' Event raised as soon as shift is pressed
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
Vedere anche
.NET Desktop feedback