WinForm中鍵盤按鍵問題

2022-04-20 07:41:54 字數 1523 閱讀 2674

通常的控制項大都有keydown,keypress和keyup事件。它們的順序以及區別在**呢?

一、順序:

根據msdn所講:keydown>keypress>keyup.

二、區別:

keydown和keypress很接近,都是在按鍵按下時候先後發生。keyup是放掉某個鍵之後發生的事件。

三、keydown和keypress:

keydown的事件中屬性是keyeventargs,其中包含三個重要屬性:

1)keycode(返回乙個keys的列舉,可以檢測除scrolllock和numlock之外的其它鍵值)。

2)keyvalue(等同於keycode,只不過是int型別)。

3)keydata(這個msdn沒有說清楚,不太容易理解。就我做實驗,其實是乙個檢測ctrl,shift或者alt加其他鍵的時候(組合鍵!)可以都被檢測出來。相對而言,1)和2)只能檢測乙個鍵值,不能檢測組合鍵)。

這裡給出檢測組合鍵的例子(注意,先按下shift,alt或者ctrl,然後其他鍵按下去

private

void form1_keydown(object

sender, keyeventargs e)

}

通常,keyup記錄組合鍵的順序一定和keydown相反(比如你shift+a,那麼keyup中是a+shift)。不過就檢測組合鍵無關其順序。

其餘檢測方法:

e.modifiers(只記錄ctrl,shift和alt),加e.keychar等判斷:

private

void form1_keydown(object

sender, keyeventargs e)

}

keyeventargs自身就有alt,control和shift,因此還可以這樣簡化:

private

void form1_keydown(object

sender, keyeventargs e)

}

3)注意!alt,control或者shift有左右之分。因此檢測左右的話用第三種方法不可能(keyeventargs不判斷左右,可以使用1或者2方法,借助keys列舉即可)。

4)如果是要做類似「快捷鍵」(譬如多視窗窗體,父視窗中按下某組合鍵彈出子視窗,建議把父視窗的keypreview設定true,這樣視窗比其內部所有的子控制項優先得到事件觸發)。

5)shiftkey和shift的區別:

shift:不能單獨作為判斷使用,必須加另外乙個字母鍵作為組合鍵時候使用。

shiftkey:單獨按下shift鍵(沒有其它組合鍵)時候判斷使用。(同理:lshiftkey和rshiftkey)。

iPadOs中鍵盤手勢大全

ipados 中鍵盤和手勢的快捷操作大全 快速移動游標和選擇文字 在支援三維觸控 3d touch 的 ios 裝置上面移動游標非常簡單,彈出鍵盤之後,我們只需要在鍵盤上面重壓,即可觸發可以任意移動的 放大版游標 而在不支援 3d touch 的裝置上,這一功能也可以通過 長按空格鍵 實現了。但是對...

MFC中鍵盤響應的兩個問題

1 mfc中上下左右鍵的響應 在普通的mfc視窗中可以用onkeydown 函式或者onchar 函式來響應鍵盤訊息。普通字元的響應很簡單,但是鍵盤上下左右鍵的響應卻沒辦法直接通過字元來實現,嘗試了採用asic碼代替字元也沒有成功,以下是一種正確的使用方法 switch nchar case i c...

MacBook鍵盤鎖定 按鍵失效問題

相應 重啟 的號召,我通過滑鼠控制macbook重新啟動。但發現問題仍然存在。其一 鍵盤短路 or 鍵盤壞掉了。解決方法 拿去修吧!因為我電腦重啟的時候需要輸入登入密碼,在這個時候,我測試了鍵盤上的大多數按鍵,都有反應,能進行正常輸入。所以我斷定我的鍵盤肯定沒有壞,只是被鎖定住了。於是接著往下看。其...