选择击键组合的"正确/最佳"方法是什么?有问题的密钥是Ctrl+ Alt+ Q,我希望用户同时按下所有密钥,此时我将打开一个窗口.我目前正在做一个阵列,然后单独捕捉每个击键,但我的结果是不一致的,特别是在戴尔笔记本电脑/ Windows 7组合的特定品牌,但这是另一个故事.
所以在谷歌花了五分钟后,这只是一个粗略的版本,看了msdn,但正如我之前所说的那样是这个版本(未经测试)正确/最好的方式吗?
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch(keyData)
{
case Keys.Control | Keys.Alt | Keys.Q:
this.Parent.Text="<CTRL> + Alt + Q Captured";
break;
}
}
return base.ProcessCmdKey(ref msg,keyData);
}
Run Code Online (Sandbox Code Playgroud)
忽略msg.Msg,只看keyData.如果使用击键,则返回true而不调用base.这简化为:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.Alt | Keys.Q)) {
this.Parent.Text="<CTRL> + Alt + Q Captured";
return true;
}
return base.ProcessCmdKey(ref msg,keyData);
}
Run Code Online (Sandbox Code Playgroud)
这可能应该是窗体方法的覆盖,因此您不依赖于具有焦点的控件.你会使用this.Text.
| 归档时间: |
|
| 查看次数: |
5906 次 |
| 最近记录: |