ページ 11

.Netでのショートカットキーについて

Posted: 2014年1月20日(月) 20:39
by derok
C#で下記のように書いたのですが、上手くいきません。

コード:

    class MainForm :Form{
        public MainForm(){
            MenuStrip Menu = new MenuStrip();
            ToolStripMenuItem Menu1 = new ToolStripMenuItem("aaa");
            ToolStripMenuItem Menu11 = new ToolStripMenuItem("bbb");
            ToolStripMenuItem Menu111 = new ToolStripMenuItem("ccc");
            Menu1.ShortcutKeys = Keys.Alt | Keys.A;
            Menu11.ShortcutKeys = Keys.Control | Keys.D;
            Menu111.ShortcutKeys = Keys.Control | Keys.B;
            Menu111.Click+=Menu111_Click;
            Menu.Items.Add(Menu1);
            Menu1.DropDownItems.Add(Menu11);
            Menu11.DropDownItems.Add(Menu111);
            this.Controls.Add(Menu);
            this.MainMenuStrip = Menu;
        }
    void Menu111_Click(object sender, EventArgs e) {
            MessageBox.Show("MenuClick");
        }

    }
具体的には、Alt+A→Control+Dと押してもメニューが出てきません。
Menu111を消せば上手くいくんですがどうしたらいいのでしょうか?
VS2012を使用しています

Re: .Netでのショートカットキーについて

Posted: 2014年1月21日(火) 00:31
by ISLe
ショートカットキーは、そのメニュー項目を開くことなく実行するためのキーの組み合わせです。
そのためサブメニューの親に設定しても無意味です。

メニューを開いたり選択するのはアクセスキーです。

アクセスキーを設定するにはメニューアイテムのキャプションを
Aで選択(&A)
のようにしてください。
&の次に書いた文字がアクセスキーで、下線が現れる部分です。
キーボードから入力可能な文字でなければいけないので、Ctrl+Dをアクセスキーにはできません。
ショートカットキーと混ざってしまわないように、なるべく単独で入力できる文字が良いでしょう。

Re: .Netでのショートカットキーについて

Posted: 2014年1月21日(火) 21:02
by derok
ありがとうございました。
アクセスキーというものだったのですね。
&の意味も知れてよかったです。