2014-04-25 116 views
0

我知道我可以使用KeyDown,KeyUpKeyPress事件来处理键盘输入,但输入使用ASCII输入,这意味着它不平滑(即当我按住一个键时,事件会重复,就好像我是键入一些东西:触发一次,等待半秒钟,然后重复)。我怎样才能从键盘直接检查键是否被按下,而不是看键盘缓冲区的原始键输入?如何在VB.NET中获得原始键盘输入?

回答

0

这只是看到键盘缓冲区的KeyPress事件。

当一个键被按下时,KeyDown事件被触发,如果它不是控制键(shift,ctrl,alt等),它还会产生一个触发KeyPress事件的键盘缓冲区的字符。

只要按下键,键盘缓冲区就会生成更多字符,每个字符都会触发另一个KeyPress事件。

当一个密钥被释放时,触发该事件KeyUp

要跟踪按下的键,请使用KeyDownKeyUp事件。无法直接检查按键是否被按下,键盘只能通过发送按键事件来与计算机通信。

请注意,对于同一个密钥,KeyDown事件并不总是跟着KeyUp事件,但事件可能会重叠。键入例如一个大写字母A通常会产生这些KeyDownKeyUp事件:

KeyDown for shift 
KeyDown for a 
KeyUp for a 
KeyUp for shift 
+0

所以,如果我想跟踪这些都被关押在某一时刻的键,我需要使用布尔值,其值改为KeyUp上的True和KeyUp上的False? – 7yphoid

+0

@ 7yphoid:的确如此。那么,它不一定是布尔值,你可以例如有一个当前按下的键的列表,这取决于你使用的方便程度。 – Guffa

相关问题