如何在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.KeyPreview
为true
并向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