WinForm中快捷鍵與組合按鍵的設定方法

2022-03-02 15:18:37 字數 1355 閱讀 6432

每個窗體都有這樣3個事件:keydown、keypress、keyup,keydown和keypress都是按鍵按下事件,但keydown用的是keycode跟鍵盤各個按鍵相對應,它對應keys列舉,用起來比較方便;而keypress用的是keychar,這個就要找asc ii編碼了,不方便。因此我們使用keydown事件來設定窗體的快捷鍵,其實對應的重寫onkeydown方法也可以響應按鍵訊息。

新建乙個空白窗體 

雙擊該事件後的空白生成**,首先我們設定單個按鍵,讓它按下f11最大化,再次按下還原,在事件中加入如下**: 

if (e.keycode == keys.f11) 

若窗體的windowstate為maximized則還原,否則最大化) 

下面在窗體中加入乙個名為txtinput的textbox,兩個名為btnconfirm、btnexit的button: 

再次執行窗體,按下f11,不起作用了?這是怎麼回事?

因為這時窗體執行後,焦點已不在窗體上,而在控制項上了,我們要將keypreview設定為true,向窗體註冊控制項上產生的鍵盤事件,再次執行,問題解決了。

那麼組合按鍵又怎麼設定呢?例如要按下alt和數字0,需要這樣:

if (e.modifiers == keys.alt && e.keycode == keys.d0) 

使用modifiers可設定組合鍵,鍵盤數字區按鍵的keys列舉以d打頭,而小鍵盤上的數字以numpad打頭。按下ctrl與shift組合鍵的方法與其類似,下面我們看看按下ctrl + alt + 數字0該怎樣設定:

if ((int)e.modifiers == ((int)keys.control + (int)keys.alt) && e.keycode == keys.d0) 

//if(e.modifiers == (keys.control | keys.alt) && e.keycode == keys.d0)  //建議用下面的判斷

將ctrl和alt的列舉轉換為int型相加後與modifiers對比,這樣即可判斷是否按下了該組合鍵。

那麼 怎麼觸發按鈕事件呢?

如按f1觸發confirm按鈕事件

private void form1_keydown(object sender, keyeventargs e)

}另外的,與窗體的acceptbutton屬性相關聯的按鈕,將與鍵盤上的enter鍵對應;與窗體的cancelbutton屬性相關聯的按鈕,將與鍵盤上的ecs鍵對應。

WinForm中快捷鍵與組合按鍵的設定方法

第一種方法。複雜,操作簡單的快捷鍵 新建乙個空白窗體 每個窗體都有這樣3個事件 keydown keypress keyup,keydown和keypress都是按鍵按下事件,但keydown用的是keycode跟鍵盤各個按鍵相對應,它對應keys列舉,用起來比較方便 而keypress用的是key...

QT實現Ctrl S快捷鍵(組合快捷鍵)

首先要清楚,ctrl s的組合快捷鍵中,ctrl是 修飾鍵 s是 按鍵值 平時使用的組合快捷鍵都是要先按下修飾鍵再按按值鍵,順序反了就沒有組合鍵的效果了 qt按鍵按下的事件qkeyevent中有key 和modifier key 函式返回的是發生時間的按鍵值,modifier 返回的而是修飾鍵。因此...

zend Studio 快捷鍵組合

zend studio 快捷鍵組合 ctrl 單行注釋。當前為php 時,則在游標所在行新增雙斜槓行注釋,選擇多行則每一行都新增雙斜槓 而當 為html時則在行前後新增注釋,選中多行將在選區前後新增注釋,而非每行新增 php html 全部適用,不適用於css部分 ctrl shift 塊注釋,為選...