web-dev-qa-db-fra.com

Raccourci clavier pour un bouton

En C # (Microsoft Visual Studio 201 ), comment puis-je affecter un raccourci clavier à un bouton tel que le suivant?

    private void closeButton_Click(object sender, EventArgs e)
    {
        // Close the program
        this.Close();
    }

Je sais que je peux utiliser le caractère "&" dans le texte du bouton et créer un Altn raccourci, mais je voudrais créer un seul raccourci clavier, tel que c pour exécuter ce qui précède.

18
Tim S

KeyDown est votre ami;) Par exemple, si vous voulez la touche de raccourci A tandis que Shift est pressé, essayez ceci:

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

Si vous voulez un "vrai" raccourci clavier, vous pouvez utiliser des crochets. Regardez la question Stack Overflow RegisterHotKeys et crochets clavier globaux?.

13
dknaack

Voici une approche différente:

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);
    }            
}

Vous n'avez pas besoin de modifier la valeur de KeyPreview.

8
The Berga

si vous voulez ajouter CtrlS dans switch statment, vous pouvez également essayer le code ci-dessous.

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);
        }
    }
4
Rahul Patel