none
アドインでショートカットキーにテンキーの数字を割り当てるには? RRS feed

  • 質問

  • VS2003 のアドインを C# で作成しています。
    作成したコマンドに [ツール]→[オプション]→[環境]→[キーボード] からショートカットキーに Ctrl+Num 1 の様にテンキーを割り当てることができますが、アドインのコード上から以下のように Ctrl+Num 1 を割り当てようとしても、ArgumentException が発生してうまくいきません。

     

    Code Snippet
    public static void BindKey(Command myCommand)
    {
        try
        {
            myCommand.Bindings = new object[] {"全体::Ctrl+Num 1"};
        }
        catch (COMException)
        {
            MessageBox.Show("キーボードマップスキームが [既定の設定] のためキーバインドを追加できません。");
        }
        catch (ArgumentException)
        {
            MessageBox.Show("キーバインド文字列が不正です。"); // Ctrl+Num 1 だとここに来る
        }
    }

     

     

    "全体::Ctrl+1"、"全体::Ctrl+Num /"、"全体::Ctrl+Num *"、"全体::Ctrl+Num -" などはうまくいきます。

    Ctrl+[テンキーの数字] をコード上から割り当てるにはどうすればよいのか、ご存じの方がいましたらご教授願えますでしょうか?
    よろしくお願いします。

    環境:WinXP SP2 + VS2003 SP1

    2008年1月23日 3:27

すべての返信

  • 質問を投稿してからしばらく経ちますが、未だにレスがないところを見るとなんとなく「できない」という結論になりそうですね…

    参考までにその後の調査でキーバインドに関してわかったことを記載しておきます。

    • "全体::Ctrl+@" は日本語版 VS2003 で利用できるが、英語版 VS2003 で "Global::Ctrl+@" を登録しようとすると "Global::Ctrl+2" と解釈される。英語キーボードでは "@" の入力が Shift+2 だからだと思われる。
    • "全体::Ctrl+上矢印" は英語版 VS2003 の表示名である "Up Arrow" を用いて "全体::Ctrl+Up Arrow" で登録できる。"Down Arrow"、"Left Arrow"、"Right Arrow" も同様。
    • "全体::Ctrl+*1" および "全体::Ctrl+1*" (* は a~z、_、空白からなる 1~5 文字の全組み合わせ) という形式での登録はすべて失敗した。

    もう少し待って解決しなければ諦めようと思います。

    2008年2月2日 10:40
  • しばらく待ってみましたが、レスがつかないようなので「できないらしい」ということで本件クローズしたいと思います。

    ありがとうございました。

    2008年2月12日 9:51