第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.NET中的KeyDown和KeyPress有什么區(qū)別?

.NET中的KeyDown和KeyPress有什么區(qū)別?

慕田峪4524236 2019-10-05 14:51:15
中的KeyDown和KeyPress事件有.net什么區(qū)別?
查看完整描述

4 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

顯然對此有很多誤解!


KeyDown和之間的唯一實際區(qū)別KeyPress是KeyPress中繼按鍵產(chǎn)生的字符,并且只有在有按鍵時才調(diào)用。


換句話說,如果您按下A鍵盤,則會得到以下事件序列:


KeyDown:KeyCode = Keys.A,KeyData = Keys.A,修飾符= Keys.None

KeyPress:KeyChar ='a'

KeyUp:KeyCode = Keys.A

但是,如果按Shift+ A,您將得到:


KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyUp:KeyCode = Keys.A

KeyUp:KeyCode = Keys.ShiftKey

如果按住鍵一會,您將得到類似以下內(nèi)容的信息:


KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.ShiftKey,KeyData = Keys.ShiftKey,Shift,修飾符= Keys.Shift

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyDown:KeyCode = Keys.A,KeyData = Keys.A | Keys.Shift,修飾符= Keys.Shift

KeyPress:KeyChar ='A'

KeyUp:KeyCode = Keys.A

KeyUp:KeyCode = Keys.ShiftKey

請注意,它KeyPress發(fā)生在 KeyDown和之間KeyUp,而不是后面KeyUp,正如許多其他答案所述,KeyPress在不生成字符時不會調(diào)用,并且KeyDown在按住鍵時重復(fù)出現(xiàn),這與許多其他答案相反。


不會直接導(dǎo)致調(diào)用的鍵示例KeyPress:


Shift,Ctrl,Alt

F1 通過 F12

方向鍵

確實會導(dǎo)致調(diào)用的鍵示例KeyPress:


A通過Z,0通過9等等。

Spacebar

Tab (KeyChar ='\ t',ASCII 9)

Enter (KeyChar ='\ r',ASCII 13)

Esc (KeyChar ='\ x1b',ASCII 27)

Backspace (KeyChar ='\ b',ASCII 8)

對于好奇,KeyDown大致關(guān)聯(lián)到WM_KEYDOWN,KeyPress到WM_CHAR和KeyUp到WM_KEYUP。 WM_KEYDOWN 可以調(diào)用的次數(shù)少于鍵重復(fù)的次數(shù),但是它會發(fā)送一個重復(fù)計數(shù),IIRC,WinForms會使用該計數(shù)來精確地生成每個重復(fù)的KeyDown。


查看完整回答
反對 回復(fù) 2019-10-05
?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

KeyPress僅由可打印的字符觸發(fā),并在KeyDown事件后觸發(fā)。根據(jù)鍵入延遲設(shè)置,可以有多個KeyDown和KeyPress事件,但只有一個KeyUp事件。


KeyDown 

KeyPress 

KeyUp


查看完整回答
反對 回復(fù) 2019-10-05
?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

KeyPress比KeyDown(和KeyUp)具有更高的抽象級別。KeyDown和KeyUp與硬件相關(guān):鍵盤上按鍵的實際操作。KeyPress更是“我從鍵盤上收到了一個字符”。


查看完整回答
反對 回復(fù) 2019-10-05
  • 4 回答
  • 0 關(guān)注
  • 548 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號