Nasıl yapılır: Hangi Değiştirici Tuşa Basıldığını Belirleme

Kullanıcının tuş vuruşlarını kabul eden bir uygulama oluşturduğunuzda SHIFT, ALT ve CTRL tuşları gibi değiştirici tuşları da izlemek isteyebilirsiniz. Değiştirici tuşa diğer tuşlarla veya fare tıklamalarıyla birlikte basıldığında, uygulamanız uygun şekilde yanıt verebilir. Örneğin, S harfine basıldığında, bu yalnızca ekranda bir "s" gösterilmesine neden olabilir, ancak CTRL+S tuşlarına basıldığında geçerli belge kaydedilebilir. Olayı işlerseniz KeyDown , Modifiers olay işleyicisi KeyEventArgs tarafından alınan özelliğinin hangi değiştirici tuşlara basıldığını belirtir. Alternatif olarak özelliği, KeyDataKeyEventArgs basılan karakterin yanı sıra bit düzeyinde OR ile birleştirilen değiştirici tuşları da belirtir. Ancak, olayı veya fare olayını işiyorsanız KeyPress , olay işleyicisi bu bilgileri almaz. Bu durumda, sınıfının özelliğini Control kullanmanız ModifierKeys gerekir. Her iki durumda da, bit düzeyinde ve uygun Keys değeri ve test ettiğiniz değeri gerçekleştirmeniz gerekir. Numaralandırma Keys , her değiştirici anahtarın çeşitlemelerini sunar, bu nedenle bit düzeyinde VE değerini doğru değerle gerçekleştirmeniz önemlidir. Örneğin, SHIFT tuşu , ShiftKeyile temsil edilir Shiftve LShiftKey SHIFT'i değiştirici anahtar olarak test etmek için doğru değerdirShiftRShiftKey. Benzer şekilde, CTRL ve ALT değerlerini değiştirici olarak test etmek için sırasıyla ve Alt değerlerini kullanmanız Control gerekir.

Dekont

Visual Basic programcıları da özelliği aracılığıyla Keyboard önemli bilgilere erişebilir

Hangi değiştirici tuşa basıldığını belirlemek için

  • Belirli bir değiştirici tuşa ModifierKeys basılıp basılmadığını belirlemek için bit düzeyinde AND işlecini özelliği ve sabit listesi değeriyle Keys kullanın. Aşağıdaki kod örneği, SHIFT tuşuna bir KeyPress olay işleyicisi içinde basılıp basılmadığının nasıl belirleneceğini gösterir.

    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
    

Ayrıca bkz.