如何:判斷所按的輔助按鍵為何

當您建立接受使用者按鍵的應用程式時,您可能也想要監視輔助按鍵,例如 SHIFT、ALT 和 CTRL 鍵。 當修飾詞按鍵與其他按鍵或按一下滑鼠時,您的應用程式可以適當地回應。 例如,如果按下字母 S,這可能會造成 「s」 出現在畫面上,但如果按下按鍵 CTRL+S,可能會儲存目前的檔。 如果您處理 KeyDown 事件, Modifiers 事件處理常式所接收的 KeyEventArgs 屬性會指定按下哪些修飾詞按鍵。 或者, KeyDataKeyEventArgs 屬性會指定已按下的字元,以及與位 OR 結合的任何修飾詞按鍵。 不過,如果您要處理 KeyPress 事件或滑鼠事件,事件處理常式就不會收到此資訊。 在此情況下,您必須使用 ModifierKeys 類別的 Control 屬性。 不論是哪一種情況,您都必須執行適當 Keys 值的位 AND,以及您要測試的值。 列舉 Keys 提供每個修飾詞索引鍵的變化,因此請務必以正確的值執行位 AND。 例如,SHIFT 索引鍵是以 ShiftRShiftKeyShiftKey 表示,而 LShiftKey 測試 SHIFT 做為修飾詞索引鍵 Shift 的正確值為 。 同樣地,若要測試 CTRL 和 ALT 作為修飾詞,您應該分別使用 ControlAlt 值。

注意

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
    

另請參閱