上一篇鳥(niǎo)文中,老周通過(guò)史無(wú)前例的代碼向各位 demo 了訪問(wèn)鍵的用法(即 Alt + 某某)。不過(guò),大伙伴們一定會(huì)發(fā)現(xiàn),訪問(wèn)鍵畢竟限制較大,不太靈活,也不好發(fā)揮,于是就需要自定義快捷鍵了。
其實(shí),自定義快捷鍵也不是什么很玄的東西,老周向來(lái)不喜歡故弄玄虛,說(shuō)白了嘛,就是對(duì)鍵盤事件的處理。UWP 與 WPF 有相似處,但也有差異。這些差異是不影響咱們編程的,要是有些差異你就覺(jué)得有困難了,那證明你的編程水平實(shí)在太差,趕緊回家給黨組織寫 10 份 800000 字的檢討。
既然是鍵盤事件了,你首先閉上眼睛,一邊養(yǎng)神一邊想想,鍵盤事件會(huì)涉及到什么關(guān)聯(lián)的數(shù)據(jù)呢。首先,程序必須知道哪個(gè)鍵被操作了,是吧,而每個(gè)鍵都有內(nèi)置的碼位的,如虛鍵碼,這個(gè)好辦,Windows.System.VirtualKey 枚舉已經(jīng)為我們定義好了,所以這個(gè)你不必?zé)┬?;接著,我們?huì)想到,一個(gè)鍵會(huì)有啥操作呢?是了,無(wú)非就是按下和松開(kāi),即 Key Down和Key Up。
只要以上問(wèn)題你想通了,那事情就很好弄了,比吃栗子還簡(jiǎn)單。
UWP的SDK 給我們準(zhǔn)備了兩個(gè)鍵盤事件:KeyDown在鍵被按下時(shí)發(fā)生,KeyUp在鍵彈起時(shí)發(fā)生。至于要處理哪個(gè)事件,或者是否兩個(gè)都處理,那就看你要做什么了。
要注意,這兩個(gè)鍵盤事件出現(xiàn)在兩個(gè)地方:
1、UIElement 類公開(kāi)了這兩個(gè)事件,這是用于處理用戶界面上的元素的鍵盤行為的,但不包括當(dāng)前窗口。
2、要在當(dāng)前窗口層面上處理鍵盤事件,就要用到 CoreWindow 類,該類也公開(kāi)這兩個(gè)鍵盤事件。調(diào)用 GetForCurrentThread 靜態(tài)方法,可以獲取到當(dāng)前窗口的實(shí)例。
&