C#控制項中的KeyDown、KeyPress 與 KeyUp事件

來源:互聯網
上載者:User

研究了一下KeyDown,KeyPress 和 KeyUp 的學問。讓我們帶著如下問題來說明:

1.這三個事件的順序是怎麼樣的?
2.KeyDown 觸發後,KeyUp是不是一定觸發?
3.三個事件的定義
4.KeyDown、KeyUp 和KeyPress 之間的區別
5.如何區分是否按的是小鍵盤?
6.PrScrn按鍵三個事件能夠捕獲嗎?
7.{菜單鍵}和{開始鍵}KeyPress能夠捕獲嗎?
8.如何捕獲系統的按鍵組合?
9.通過什麼方式捕獲PrScrn按鍵事件?

(一)鍵事件按下列順序發生:

KeyDown

KeyPress

KeyUp

(二)KeyDown觸發後,不一定觸發KeyUp,當KeyDown 按下後,拖動滑鼠,那麼將不會觸發KeyUp事件。

(三)定義

KeyDown:在控制項有焦點的情況下按下鍵時發生。

KeyPress:在控制項有焦點的情況下按下鍵時發生。(下面會說和KeyDown 的區別)

KeyUp:在控制項有焦點的情況下釋放鍵時發生。

(四)KeyPress 和KeyDown 、KeyPress之間的區別

    1.KeyPress主要用來捕獲數字(注意:包括Shift+數位符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字元
        KeyDown 和KeyUp 通常可以捕獲鍵盤除了PrScrn所有按鍵(這裡不討論特殊鍵盤的特殊鍵)

    2.KeyPress 只能捕獲單個字元

        KeyDown 和KeyUp 可以擷取的群組合鍵。

    3.KeyPress 可以捕獲單個字元的大小寫

    4.KeyDown和KeyUp 對於單個字元捕獲的KeyValue 都是一個值,也就是不能判斷單個字元的大小寫。

    5.KeyPress 不區分小鍵盤和主鍵盤的數字字元。

        KeyDown 和KeyUp 區分小鍵盤和主鍵盤的數字字元。

    6.其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。

(五)系統按鍵組合的判定

    在使用鍵盤的時候,通常會使用到CTRL+SHIFT+ALT 類似的按鍵組合功能。對於此,我們如何來判定?

    通過KeyUp 事件能夠來處理(這裡說明一下為什麼不用KeyDown,因為在判定KeyDown的時候,CTRL、SHIFT和ALT 屬於一直按下狀態,然後再加另外一個鍵是不能準確擷取的群組合鍵,所以使用KeyDown 是不能準確判斷出的,要通過KeyUp 事件來判定 )

(六)捕獲PrScrn按鍵事件

通過一種鉤子的方式可以判定PrScrn 按鍵事件,鉤子可以擷取任何鍵盤事件。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.