如何在C#中的Windows面板控件中获取Keypress事件

时间:2010-01-25 12:19:15

标签: c# winforms events keypress

我想在c#的windows面板控件中获取keypress事件,对我来说是否有任何身体帮助......

4 个答案:

答案 0 :(得分:11)

您应该处理Panel.KeyPress事件。

实施例

public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
    ... do something when key is pressed.
}

...

(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);

答案 1 :(得分:9)

问题是,首先你的主表单得到了KeyPress并立即将此消息发送到活动控件。如果没有处理此按键,则会将其冒泡到父控件,依此类推。

要拦截此链,您必须在Form.KeyPreviewtrue中添加处理程序Form.KeyPress。现在,您可以在表单中处理按下的键。

答案 2 :(得分:3)

“Panel”对象无法正确接收“KeyPress”事件。

我创建了Panel重载:

public class PersoPanel : Panel

并使用重写方法ProcessCmdKey

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

拦截按键:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    MessageBox.Show("You press " + keyData.ToString());

    // dO operations here...

    return base.ProcessCmdKey(ref msg, keyData);
}

答案 3 :(得分:1)

Panel + Keypress - C#讨论板 - CodeProject

http://www.codeproject.com/Messages/704386/Panel-plus-Keypress.aspx