Keyboard shortcut for a button

后端 未结 3 1489
情话喂你
情话喂你 2020-12-31 02:59

In C# (Microsoft Visual Studio 2010), how can I assign a keyboard shortcut to a button such as the following?

    private void closeButton_Click(ob         


        
相关标签:
3条回答
  • 2020-12-31 03:22

    Here's a different approach:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch(keyData)
        {
             case Keys.F2:
                 // do something...
                 return true;
             case Keys.F3:
                 // do something...
                 return true;
             case Keys.F4:
                 // do something...
                 return true;
             default:
                 return base.ProcessCmdKey(ref msg, keyData);
        }            
    }
    

    You don't need to change KeyPreview value.

    0 讨论(0)
  • 2020-12-31 03:34

    KeyDown is your friend ;) For example, if you want the shortcut key A while Shift is pressed, try this:

        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.A && e.Shift) 
                // Do something
        }
    

    If you want a "real" keyboard shortcut you can use hooks. Look at Stack Overflow question RegisterHotKeys and global keyboard hooks?.

    0 讨论(0)
  • 2020-12-31 03:36

    if you want add Ctrl + S in switch statment so you can also try below code.

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
                case Keys.Control | Keys.S:
                    // do something...
                    return true;
                case Keys.Control |Keys.Alt | Keys.S:
                    // do something...
                    return true;
                case Keys.F2:
                    // do something...
                    return true;
                case Keys.F3:
                    // do something...
                    return true;
                case Keys.F4:
                    // do something...
                    return true;
                default:
                    return base.ProcessCmdKey(ref msg, keyData);
            }
        }
    
    0 讨论(0)
提交回复
热议问题