web-dev-qa-db-ja.com

ボタンのキーボードショートカット

C#(Microsoft Visual Studio 201 )では、次のようなボタンにキーボードショートカットを割り当てるにはどうすればよいですか?

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

ボタンのテキストに「&」文字を使用して、 Alt - n ショートカットですが、次のような単一のキー押下ショートカットを作成したいと思います c 上記を実行します。

18
Tim S

KeyDownは友達です;)たとえば、ショートカットキーが必要な場合 A ながら Shift が押された場合、これを試してください:

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

「本物の」キーボードショートカットが必要な場合は、フックを使用できます。 Stack Overflowの質問RegisterHotKeys and global keyboard hooks?を見てください。

13
dknaack

ここに別のアプローチがあります:

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

KeyPreviewの値を変更する必要はありません。

8
The Berga

__コード__ CtrlS

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