在 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。