How to get Keypress event in Windows Panel control in C#

社会主义新天地 提交于 2019-12-21 08:18:34

问题


i want to get keypress event in windows panel control in c#, is any body help for me...


回答1:


You should handle the Panel.KeyPress event.

Example

public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
    ... do something when key is pressed.
}

...

(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);



回答2:


The problem is, that at first your main form got the KeyPress and will immediately send this message to the active control. If that doesn't handle this key press it will be bubbled up to the parent control and so on.

To intercept this chain, you have to in your Form.KeyPreview to true and add an handler to Form.KeyPress. Now you can handle the pressed key within your form.




回答3:


"Panel" objects cannot receive the "KeyPress" event correctly.

I've created Panel overload:

public class PersoPanel : Panel

and used the overridden method ProcessCmdKey:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

to intercept pressed keys:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    MessageBox.Show("You press " + keyData.ToString());

    // dO operations here...

    return base.ProcessCmdKey(ref msg, keyData);
}



回答4:


Panel + Keypress - C# Discussion Boards - CodeProject

http://www.codeproject.com/Messages/704386/Panel-plus-Keypress.aspx



来源:https://stackoverflow.com/questions/2132130/how-to-get-keypress-event-in-windows-panel-control-in-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!