HOW TO:判斷所按的輔助按鍵為何
建立接受使用者按鍵輸入的應用程式時,您可能也會想要監視輔助按鍵 (Modifier Key),例如 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。 同樣地,若要測試 CTLR 和 ALT 是否為輔助按鍵,則您應分別使用 Control 和 Alt 值。
注意事項 |
---|
Visual Basic 程式設計人員也可以透過 Keyboard 屬性存取按鍵資訊。 |
若要判斷所按輔助按鍵為何
若要判斷所按的特定輔助按鍵為何,請以 ModifierKeys 屬性和 Keys 列舉值來使用位元 AND 運算子。 下列程式碼範例會示範如何判斷在 KeyPress 事件處理常式內是否有按下 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
public void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { MessageBox.Show("Pressed " + Keys.Shift); } }
private: void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e) { if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift) { MessageBox::Show("Pressed " + Keys::Shift.ToString()); } }
請參閱
工作
HOW TO:在 Visual Basic 中判斷 CapsLock 是否已啟用