如何:判斷所按的輔助按鍵為何
當您建立接受使用者按鍵輸入的應用程式時,您可能也想要監視輔助按鍵,例如 SHIFT、ALT 和 CTRL 鍵。 當您按下輔助按鍵搭配其他按鍵或滑鼠點擊時,您的應用程式可以適當地回應。 例如,如果按下字母 S,這可能會造成「s」出現在畫面上,但如果按下按鍵 CTRL+S,則可能會儲存目前的文件。 如果您處理 KeyDown 事件,事件處理常式所接收 KeyEventArgs 的 Modifiers 屬性會指定按下哪些輔助按鍵。 或者,KeyEventArgs 的 KeyData 屬性會指定已按下的字元,以及與位元 OR 結合的任何輔助按鍵。 不過,如果您要處理 KeyPress 事件或滑鼠事件,則事件處理常式就不會收到此資訊。 在這種情況下,您必須使用 Control 類別的 ModifierKeys 屬性。 不論是哪一種情況,您都必須執行適當 Keys 值的位元 AND,以及您要測試的值。 Keys 列舉提供每個輔助按鍵的變化,因此請務必以正確的值執行位元 AND。 例如,SHIFT 鍵是以 Shift、ShiftKey、RShiftKey 和 LShiftKey 來表示,而測試 SHIFT 作為輔助按鍵的正確值為 Shift。 同樣地,若要測試 CTRL 和 ALT 作為輔助按鍵,您應該分別使用 Control 和 Alt 值。
注意
Visual Basic 程式設計人員也可以透過 Keyboard 屬性存取重要資訊
若要判斷按下的輔助按鍵
使用位
AND
運算子搭配 ModifierKeys 屬性和 Keys 列舉的值,以判斷是否按下特定的輔助按鍵。 下列程式碼範例示範如何判斷 SHIFT 鍵是否在 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