共用方式為


HOW TO:判斷所按的輔助按鍵為何

建立接受使用者按鍵輸入的應用程式時,您可能也會想要監視輔助按鍵 (Modifier Key),例如 SHIFT、ALT 和 CTRL 鍵。 當按下輔助按鍵與其他按鍵或滑鼠按鍵的組合時,應用程式可以適當地回應。 例如,如果是按下字母 S,只會單純在螢幕上顯示 "s",但如果是按下 CTRL+S 則會儲存目前的文件。 如果您處理 KeyDown 事件,則事件處理常式所接收的 KeyEventArgsModifiers 屬性會指定所按下的輔助按鍵為何。 或者,KeyEventArgsKeyData 屬性會指定,和位元 OR 結合的任一輔助按鍵是與哪個字母一起按下。 但是,如果您處理的是 KeyPress 事件或滑鼠事件,則事件處理常式不會接收這個資訊。 在這種情況下,您必須使用 Control 類別的 ModifierKeys 屬性。 不論是哪一種情況下,您都必須執行適當 Keys 值的位元 AND 以及正在測試的值。 Keys 列舉型別提供每個輔助按鍵的變異,所以請您務必以正確值執行位元 AND。 例如,SHIFT 鍵是以 ShiftShiftKeyRShiftKeyLShiftKey 表示,而測試 SHIFT 是否為輔助按鍵的正確值則是 Shift。 同樣地,若要測試 CTLR 和 ALT 是否為輔助按鍵,則您應分別使用 ControlAlt 值。

注意事項注意事項

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 是否已啟用

參考

Keys

ModifierKeys

其他資源

Windows Form 應用程式中的鍵盤輸入