[英]How to get Keypress event in Windows Panel control in C#
我想在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.