Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ahogy a felhasználó beír egy billentyűt az alkalmazásba, figyelheti a lenyomott módosító kulcsokat, például a SHIFT, ALTés CTRL. Ha más billentyűkkel vagy akár egérkattintással együtt lenyom egy módosító kulcsot, az alkalmazás megfelelően tud válaszolni. Az S billentyű lenyomásával például "s" jelenhet meg a képernyőn. Ha a CTRL+S billentyűkombinációt lenyomja, akkor előfordulhat, hogy a program menti az aktuális dokumentumot.
Ha a KeyDown eseményt kezeli, az eseménykezelő által kapott KeyEventArgs.Modifiers tulajdonság határozza meg, hogy mely módosító kulcsok legyenek lenyomva. Emellett a KeyEventArgs.KeyData tulajdonság határozza meg a lenyomott karaktert, valamint a módosító billentyűket egy bitenkénti VAGY beállítással kombinálva.
Ha az KeyPress eseményt vagy egéreseményt kezeli, az eseménykezelő nem kapja meg ezeket az információkat. A ModifierKeys osztály Control tulajdonságával észlelhet egy kulcsmódosítót. Mindkét esetben el kell végeznie a megfelelő Keys és a tesztelt érték bitenkénti ÉS műveletét. A Keys enumeráció az egyes módosítóbillentyűk variációit kínálja, ezért fontos, hogy a bitenkénti ÉS műveletet a helyes értékkel végezze el.
A következő kulcsértékek például a SHIFT billentyűt jelölik:
A SHIFT módosító kulcsként való tesztelésének helyes értéke Keys.Shift. Hasonlóképpen, ha CTRL és ALT módosítóként szeretné tesztelni, a Keys.Control és Keys.Alt értékeket kell használnia.
Módosító kulcs észlelése
Annak észlelése, hogy a módosító kulcs lenyomva van-e a ModifierKeys tulajdonság és a Keys enumerálási érték bitenkénti ÉS operátorral való összehasonlításával.
Az alábbi példakód bemutatja, hogyan állapítható meg, hogy a SHIFT billentyű lenyomva van-e az KeyPress és KeyDown eseménykezelőkben.
// 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
Lásd még
.NET Desktop feedback