Porady: określanie, który klawisz modyfikujący został naciśnięty
Podczas tworzenia aplikacji, która akceptuje naciśnięcia klawiszy użytkownika, możesz również monitorować pod kątem klawiszy modyfikatora, takich jak klawisze SHIFT, ALT i CTRL. Po naciśnięciu klawisza modyfikatora w połączeniu z innymi klawiszami lub kliknięciem myszy aplikacja może odpowiednio odpowiedzieć. Jeśli na przykład litera S jest naciśnięta, może to spowodować wyświetlenie "s" na ekranie, ale jeśli naciśnięcie klawiszy CTRL+S spowoduje zapisanie bieżącego dokumentu. Jeśli obsłużysz KeyDown zdarzenie, właściwość KeyEventArgs odebranego przez program obsługi zdarzeń określa, Modifiers które klawisze modyfikatora są naciskane. Alternatywnie właściwość KeyData właściwości KeyEventArgs określa znak, który został naciśnięty, a także wszelkie klawisze modyfikujące połączone z bitowym OR. Jeśli jednak obsługujesz KeyPress zdarzenie lub zdarzenie myszy, program obsługi zdarzeń nie otrzymuje tych informacji. W takim przypadku należy użyć ModifierKeys właściwości Control klasy . W obu przypadkach należy wykonać bitową wartość AND odpowiedniej Keys wartości i testowane wartości. Wyliczenie Keys oferuje odmiany każdego klucza modyfikatora, dlatego ważne jest, aby wykonać bitowe operacje AND z poprawną wartością. Na przykład klucz SHIFT jest reprezentowany przez Shift, ShiftKey, RShiftKey a LShiftKey poprawna wartość do przetestowania shift jako klucz modyfikatora to Shift. Podobnie, aby przetestować klawisze CTRL i ALT jako modyfikatory, należy użyć Control odpowiednio wartości i Alt .
Uwaga
Programiści języka Visual Basic mogą również uzyskiwać dostęp do kluczowych informacji za pośrednictwem Keyboard właściwości
Aby określić, który klawisz modyfikatora został naciśnięty
Użyj operatora bitowego
AND
z właściwością ModifierKeys i wartością Keys wyliczenia, aby określić, czy jest naciśnięty określony klawisz modyfikatora. Poniższy przykład kodu pokazuje, jak określić, czy klawisz SHIFT jest naciskany w programie obsługi zdarzeń KeyPress .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
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla