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

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

您应该处理Panel.KeyPress事件。

public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e) { ... do something when key is pressed. } ... (MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler); 

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

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

“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); } 

Panel + Keypress – C#讨论板 – CodeProject

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