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.
.NET Desktop feedback