Bagikan melalui


Cara memeriksa penekanan tombol pengubah (Formulir Windows .NET)

Saat pengguna mengetikkan kunci ke dalam aplikasi, Anda dapat memantau tombol pengubah yang ditekan seperti SHIFT, ALT, dan CTRL. Ketika tombol pengubah ditekan dalam kombinasi dengan tombol lain atau bahkan klik mouse, aplikasi Anda dapat merespons dengan tepat. Misalnya, menekan tombol S dapat menyebabkan "s" muncul di layar. Jika tombol CTRL+S ditekan, sebagai gantinya, dokumen saat ini mungkin disimpan.

Penting

Dokumentasi Panduan Desktop untuk .NET 7 dan .NET 6 sedang dibangun.

Jika Anda menangani KeyDown peristiwa, properti yang KeyEventArgs.Modifiers diterima oleh penanganan aktivitas menentukan tombol pengubah mana yang ditekan. Selain itu KeyEventArgs.KeyData , properti menentukan karakter yang ditekan bersama dengan tombol pengubah yang dikombinasikan dengan bitwise OR.

Jika Anda menangani KeyPress peristiwa atau peristiwa mouse, penanganan aktivitas tidak menerima informasi ini. ModifierKeys Gunakan properti Control kelas untuk mendeteksi pengubah kunci. Dalam kedua kasus, Anda harus melakukan bitwise AND dari nilai yang sesuai Keys dan nilai yang Anda uji. Enumerasi Keys menawarkan variasi setiap kunci pengubah, jadi penting bagi Anda untuk melakukan bitwise DAN memeriksa dengan nilai yang benar.

Misalnya, kunci SHIFT diwakili oleh nilai kunci berikut:

Nilai yang benar untuk menguji SHIFT sebagai kunci pengubah adalah Keys.Shift. Demikian pula, untuk menguji CTRL dan ALT sebagai pengubah, Anda harus menggunakan Keys.Control nilai dan Keys.Alt , masing-masing.

Mendeteksi kunci pengubah

Deteksi apakah tombol pengubah ditekan dengan membandingkan ModifierKeys properti dan Keys nilai enumerasi dengan operator AND bitwise.

Contoh kode berikut menunjukkan cara menentukan apakah tombol SHIFT ditekan dalam KeyPress penanganan aktivitas dan 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

Baca juga