Bagikan melalui


Cara: Menentukan Tombol Pengubah Mana yang Ditekan

Saat Anda membuat aplikasi yang menerima penekanan kunci pengguna, Anda mungkin juga ingin memantau kunci pengubah seperti tombol SHIFT, ALT, dan CTRL. Ketika tombol pengubah ditekan dalam kombinasi dengan tombol lain, atau dengan klik mouse, aplikasi Anda dapat merespons dengan tepat. Misalnya, jika huruf S ditekan, ini hanya dapat menyebabkan "s" muncul di layar, tetapi jika tombol CTRL+S ditekan, dokumen saat ini dapat disimpan. Jika Anda menangani KeyDown peristiwa, Modifiers properti yang KeyEventArgs diterima oleh penanganan aktivitas menentukan tombol pengubah mana yang ditekan. Atau, KeyData properti menentukan KeyEventArgs karakter yang ditekan serta tombol pengubah apa pun yang dikombinasikan dengan bitwise OR. Namun, jika Anda menangani KeyPress peristiwa atau peristiwa mouse, penanganan aktivitas tidak menerima informasi ini. Dalam hal ini, Anda harus menggunakan ModifierKeys properti Control kelas . Dalam kedua kasus, Anda harus melakukan bitwise AND dari nilai yang sesuai Keys dan nilai yang Anda uji. Keys Enumerasi menawarkan variasi setiap kunci pengubah, jadi penting bagi Anda untuk melakukan BITWISE AND dengan nilai yang benar. Misalnya, kunci SHIFT diwakili oleh Shift, ShiftKey, RShiftKey dan LShiftKey Nilai yang benar untuk menguji SHIFT sebagai kunci pengubah adalah Shift. Demikian pula, untuk menguji CTRL dan ALT sebagai pengubah, Anda harus menggunakan Control nilai dan Alt , masing-masing.

Catatan

Pemrogram Visual Basic juga dapat mengakses informasi utama melalui Keyboard properti

Untuk menentukan tombol pengubah mana yang ditekan

  • Gunakan operator bitwise AND dengan ModifierKeys properti dan nilai Keys enumerasi untuk menentukan apakah tombol pengubah tertentu ditekan. Contoh kode berikut menunjukkan cara menentukan apakah tombol SHIFT ditekan dalam penanganan KeyPress aktivitas.

    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
    

Baca juga