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

后端 未结 4 861
挽巷
挽巷 2021-02-20 12:37

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

相关标签:
4条回答
  • 2021-02-20 13:13

    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.

    0 讨论(0)
  • 2021-02-20 13:15

    Panel + Keypress - C# Discussion Boards - CodeProject

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

    0 讨论(0)
  • 2021-02-20 13:21

    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);
    
    0 讨论(0)
  • 2021-02-20 13:21

    "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);
    }
    
    0 讨论(0)
提交回复
热议问题