在 Windows Forms 應用程式開發時,我想偵測組合鍵例如 Ctrl + C 時才會做動作,該如何撰寫?

  • 11133
  • 0
  • 2012-02-01

在 Windows Forms 應用程式開發時,我想偵測組合鍵例如 Ctrl + C 時才會做動作,該如何撰寫?

 

問題的來龍去脈

在 Windows Forms 應用程式開發時,我想偵測組合鍵例如 Ctrl + C 時才會做動作,該如何撰寫?

 

問題的發生原因

我們可以在 Control.KeyDown 事件 取得按下的按鍵,但假如我們只要特定的組合鍵,例如 Ctrl + C 才會執行,其他像是 Ctrl + Alt + C 情況,雖然也包含 Ctrl + C 但我們想要排除掉的話,可以透過 KeyData 屬性

 

問題的解決方法

1. 開啟新專案,在表單加入 KeyDown 事件,並且撰寫以下程式碼

C#

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == (Keys.Control | Keys.C)) 
            {
                MessageBox.Show("Ctrl + C");
            }
        }

VB

    Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyData = (Keys.Control + Keys.C) Then
            MessageBox.Show("Ctrl + C")
        End If
    End Sub

2. 當我們在表單上,按 Ctrl + C 時,才會顯示 MessageBox,在其他情況下例如按 Ctrl + Alt + C 則不會顯示 MessageBox。

 

其他相關資訊

Control.KeyDown 事件

我用User Control。在里面添加了一个textBox控件,想实现组合键(ctrl+c)的功能。