我想在c#的windows面板控件中获取keypress事件,对我来说是否有任何身体帮助......
答案 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.KeyPreview
至true
中添加处理程序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