我想在 C# 中的 Windows 面板控件中获取按键事件,对我有任何帮助吗...
问问题
23910 次
4 回答
13
您应该处理Panel.KeyPress事件。
例子
public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
... do something when key is pressed.
}
...
(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);
于 2010-01-25T12:25:27.207 回答
9
问题是,一开始你的主窗体得到了 KeyPress 并且会立即将此消息发送到活动控件。如果这不能处理此按键,它将冒泡到父控件等等。
要拦截这个链,你必须在你的Form.KeyPreview
to中true
添加一个处理程序到Form.KeyPress
. 现在您可以在表单中处理按下的键。
于 2010-01-25T12:51:23.560 回答
3
“面板”对象无法正确接收“按键”事件。
我创建了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);
}
于 2010-03-16T10:00:55.650 回答
1
面板 + 按键 - C# 讨论板 - CodeProject
http://www.codeproject.com/Messages/704386/Panel-plus-Keypress.aspx
于 2010-12-10T08:24:58.217 回答