共用方式為


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

當您建立接受使用者按鍵輸入的應用程式時,您可能也想要監視輔助按鍵,例如 SHIFT、ALT 和 CTRL 鍵。 當您按下輔助按鍵搭配其他按鍵或滑鼠點擊時,您的應用程式可以適當地回應。 例如,如果按下字母 S,這可能會造成「s」出現在畫面上,但如果按下按鍵 CTRL+S,則可能會儲存目前的文件。 如果您處理 KeyDown 事件,事件處理常式所接收 KeyEventArgsModifiers 屬性會指定按下哪些輔助按鍵。 或者,KeyEventArgsKeyData 屬性會指定已按下的字元,以及與位元 OR 結合的任何輔助按鍵。 不過,如果您要處理 KeyPress 事件或滑鼠事件,則事件處理常式就不會收到此資訊。 在這種情況下,您必須使用 Control 類別的 ModifierKeys 屬性。 不論是哪一種情況,您都必須執行適當 Keys 值的位元 AND,以及您要測試的值。 Keys 列舉提供每個輔助按鍵的變化,因此請務必以正確的值執行位元 AND。 例如,SHIFT 鍵是以 ShiftShiftKeyRShiftKeyLShiftKey 來表示,而測試 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
    

另請參閱