C# winform的窗體類有KeyPreview屬性,可以接收窗體內控件的鍵盤事件注冊。
窗體和控件都有KeyDown,KeyUp,KeyPress三個事件,每個事件都會有KeyEventArgs參數傳入,只要判斷傳入參數的KeyChar就可以了,Framework提供了Keys枚舉來表示鍵盤上的各個鍵。
核心判斷的代碼如下:
1.單鍵判斷
if (e.KeyCode == Keys.Delete)
{
//處理邏輯
}
2.組合建判斷:
if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.Delete)
{
//處理邏輯
}
3.判斷上鍵
if (key == Keys.Up || key == Keys.PageUp)
{
if (index - 2 >= 0)
{
this.lstQueryFilterControls[index - 2].SetInputControlFocus();
}
}
4.判斷上鍵
if (key == Keys.Down || key == Keys.PageDown)
{
if (index + 2 <= this.lstQueryFilterControls.Count - 1)
this.lstQueryFilterControls[index + 2].SetInputControlFocus();
else
{
if (this.listView.Items.Count > 0)
{
this.listView.Focus();
this.listView.Items[0].Selected = true;
}
}
5.判斷Ctrl + A
If TextBox1.Text <> "" AndAlso (e.Modifiers.CompareTo(Keys.Control) = 0 And e.KeyCode = Keys.A) Then TextBox1.SelectAll() My.Computer.Clipboard.SetText(TextBox1.Text) End If