如何检测当前按下的键?

如何检测当前按下的键?

在……里面Windows窗体,您可以随时知道光标的当前位置,这要归功于游标班级,等级。

同样的东西似乎不适用于键盘。是否有可能知道,例如,换档按下键了吗?

是否绝对有必要追踪每一个键盘通知(按键和按键事件)?


宝慕林4294392
浏览 725回答 3
3回答

缥缈止盈

if ((Control.ModifierKeys & Keys.Shift) != 0)如果克特+换档倒下了。如果您想要检查是否只按Shift键,if (Control.ModifierKeys == Keys.Shift)如果您在继承Control(例如窗体),可以删除Control.

猛跑小猪

下面的代码是如何检测几乎所有当前按下的键,而不仅仅是换档钥匙。private&nbsp;KeyMessageFilter&nbsp;m_filter&nbsp;=&nbsp;new&nbsp;KeyMessageFilter();private&nbsp;void&nbsp;Form1_Load(object&nbsp;sender,&nbsp;EventArgs&nbsp;e){ &nbsp;&nbsp;&nbsp;&nbsp;Application.AddMessageFilter(m_filter);}public&nbsp;class&nbsp;KeyMessageFilter&nbsp;:&nbsp;IMessageFilter{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;int&nbsp;WM_KEYDOWN&nbsp;=&nbsp;0x0100; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;const&nbsp;int&nbsp;WM_KEYUP&nbsp;=&nbsp;0x0101; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;m_keyPressed&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Dictionary<Keys,&nbsp;bool>&nbsp;m_keyTable&nbsp;=&nbsp;new&nbsp;Dictionary<Keys,&nbsp;bool>(); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Dictionary<Keys,&nbsp;bool>&nbsp;KeyTable &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;m_keyTable;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;set&nbsp;{&nbsp;m_keyTable&nbsp;=&nbsp;value;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsKeyPressed() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;m_keyPressed; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsKeyPressed(Keys&nbsp;k) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;pressed&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(KeyTable.TryGetValue(k,&nbsp;out&nbsp;pressed)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pressed; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;PreFilterMessage(ref&nbsp;Message&nbsp;m) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(m.Msg&nbsp;==&nbsp;WM_KEYDOWN) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyTable[(Keys)m.WParam]&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_keyPressed&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(m.Msg&nbsp;==&nbsp;WM_KEYUP) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyTable[(Keys)m.WParam]&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_keyPressed&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP