C# 在C中重写bool进程键预览#

C# 在C中重写bool进程键预览#,c#,winforms,C#,Winforms,我使用以下代码来处理用户控件中的按键。但是我想知道我怎样才能在按键的用户控制上实现同样的功能 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) { messag

我使用以下代码来处理用户控件中的按键。但是我想知道我怎样才能在按键的用户控制上实现同样的功能

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);
}
我想在keypress中为keychar做这个

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);
}
这些代码只是给了我一些示例键。A不能让我使用示例键char='A'


提前感谢

按键事件与KeyDown和KeyUp事件截然不同。您只能使用诸如ProcessKeyPreview和ProcessCmdKey之类的替代来替代KeyDown事件处理

这种覆盖只能看到虚拟键,在任何人的键盘上都是一样的。然后,KeyDown的默认处理通过应用用户选择的特定键盘布局的窗口内的代码发送虚拟键。如果这会产生一个输入键,比如韩语键盘上的“a”或“a”或“我不知道”什么,那么这会产生一个按键事件。它直接传递给带有焦点的控件,您只能通过为其按键事件实现事件处理程序在控件处拦截它


上一段中的“我不知道”条款是重要的部分。一般来说,试图截取键入键是没有意义的。除了“a”和“a”之间的区别之外,还有20亿潜在用户在他们的生活中从未输入过“a”。另外还不清楚您为什么要这样做,所以我不能建议其他方法。

按键事件与KeyDown和keydup事件非常不同。您只能使用诸如ProcessKeyPreview和ProcessCmdKey之类的替代来替代KeyDown事件处理

这种覆盖只能看到虚拟键,在任何人的键盘上都是一样的。然后,KeyDown的默认处理通过应用用户选择的特定键盘布局的窗口内的代码发送虚拟键。如果这会产生一个输入键,比如韩语键盘上的“a”或“a”或“我不知道”什么,那么这会产生一个按键事件。它直接传递给带有焦点的控件,您只能通过为其按键事件实现事件处理程序在控件处拦截它


上一段中的“我不知道”条款是重要的部分。一般来说,试图截取键入键是没有意义的。除了“a”和“a”之间的区别之外,还有20亿潜在用户在他们的生活中从未输入过“a”。你为什么要这样做还不清楚,所以我不能建议另一种方法。

按键在向上键时完成其循环。@Mr.deposition我想在按键时选择键的字符,如:if(e.keychar='A')。按键在向上键时完成其循环。@Mr.deposition我想选择键的字符,如:if(e.keychar='A')(e.keychar=='A')在按键中。我说的是A只是一个例子。也许他们按了numpads按钮。我说的是A只是一个例子。也许他们按了numpads按钮。