再次運行窗體,按下F11,不起作用了?這是怎麼回事?
因為這時窗體運行後,焦點已不在窗體上,而在控件上了,我們要將KeyPreview設置為True,向窗體注冊控件上產生的鍵盤事件,再次運行,問題解決了。
那麼組合按鍵又怎麼設置呢?例如要按下Alt和數字0,需要這樣:
代碼如下:
if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.D0)
{
MessageBox.Show("按下了Alt + 0");
}
使用Modifiers可設置組合鍵,鍵盤數字區按鍵的Keys枚舉以D打頭,而小鍵盤上的數字以NumPad打頭。按下Ctrl與Shift組合鍵的方法與其類似,下面我們看看按下Ctrl + Alt + 數字0該怎樣設置:
代碼如下:
if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0)
{
MessageBox.Show("按下了Control + Alt + 0");
}
將Ctrl和Alt的枚舉轉換為int型相加後與Modifiers對比,這樣即可判斷是否按下了該組合鍵。
那麼 怎麼觸發按鈕事件呢?
如按F1觸發confirm按鈕事件
代碼如下:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F1)
{
/ /如果還有keypress事件,不讓此快捷鍵觸發其事件可加一句代碼
e.Handled = true; //將Handled設置為true,指示已經處理過KeyPress事件
confirm1.PerformClick();////執行單擊confirm1的動作
}
}
另外的,與窗體的AcceptButton屬性相關聯的按鈕,將與鍵盤上的Enter鍵對應;與窗體的CancelButton屬性相關聯的按鈕,將與鍵盤上的Ecs鍵對應。
另外一種簡單快捷鍵的方法
在設置Button的Text屬性時,在一個英文字母的前面加上&(and符),例如將btnConfirm的Text屬性設置為:&Confirm,當運行窗體,按下Alt + C時,就相當於按下該鍵。