我使用以下代码来处理用户控件中的keydown。但是我想知道如何才能对用户按键进行相同的控制。
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
protected override bool ProcessKeyPreview(ref Message m)
{
if (m.Msg == WM_KEYDOWN && (Keys)m.WParam == Keys.A)
{
messagebox.show("You have pressed A");
}
return base.ProcessKeyPreview(ref m);
}
Run Code Online (Sandbox Code Playgroud)
我想为keypress中的keychar做到这一点。
这些代码只是给我提供示例密钥.A不能让我进行示例keychar ='A'
提前致谢
KeyPress事件与KeyDown和KeyUp事件非常不同。您只能使用诸如ProcessKeyPreview和ProcessCmdKey之类的替代来覆盖KeyDown事件处理。
这样的覆盖只能看到虚拟键,在任何人的键盘上都相同。然后,KeyDown的默认处理方式是通过Windows内部应用用户选择的特定键盘布局的代码发送虚拟键。如果产生一个打字键,如“a”或“A”或I-鸵鸟政策知道什么韩语键盘然后是产生一个按键事件。直接将其传递给具有焦点的控件,您只能通过为其KeyPress事件实现事件处理程序来在控件处对其进行拦截。
上一段中的“我不知道什么”子句是重要的部分。尝试截取键入键通常没有任何意义。除了区分“ a”和“ A”之外,您的软件中有20亿潜在用户从未在他们的生活中键入过“ A”。否则,您不清楚为什么要尝试执行此操作,因此我无法建议其他方法。
| 归档时间: |
|
| 查看次数: |
2177 次 |
| 最近记录: |