Megosztás a következőn keresztül:


Módosítóbillentyű-lenyomások ellenőrzése

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