簡體   English   中英

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

[英]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.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM