.NET TIPS

Windowsアプリケーションでアクセス・キーを割り当てるには?

デジタルアドバンテージ
2004/09/10

 Windowsアプリケーションでは、メニュー・バー(=MainMenuコントロール)やコンテキスト・メニュー(=ContextMenuコントロール)などのメニューに対し、[Alt]キー+[A]〜[Z]もしくは数字などのいずれかのキーでメニュー項目にアクセスできる「アクセス・キー」(「ニーモニック」とも呼ばれる)を割り当てることが一般的だ。

 また、メニューだけでなく、Windowsフォーム上のButtonコントロールや、Labelコントロールの後に続くコントロール(例えばTextBoxコントロール)などに対し、アクセス・キーを割り当てることも可能だ。

 次の画面は、Windowsフォーム上のメニューやコントロールに対し、実際にアクセス・キーを割り当てたものである。

Windowsフォームでのアクセス・キーの設定
Windowsフォーム上のメニューやコントロールに対し、[Alt]キー+[A]〜[Z]や数字などのいずれかのキーでメニュー項目にアクセスできる「アクセス・キー」(「ニーモニック」とも呼ばれる)を割り当てた画面。実際にアクセス・キーを割り当てるには、コントロールのTextプロパティに対して設定する文字列の中にある「A」〜「Z」のアルファベット文字(基本的に大文字)の前にアンパサンド(&)を追加することで実現できる。
  「ファイル(F )」と表記されているが、このテキストの中の「F」がアクセス・キーとなる。つまり[Alt]+[F]キーで、このメニュー・バーの[ファイル]項目をクリックしたときと同じ動作が行われる。これを実装するには、MainMenuコントロールのTextプロパティに“ファイル(&F)”という文字列を追加すればよい。アンパサンド(&)の次にあるアルファベットがアクセス・キーとなる。
  「終了(X)」のアクセス・キーは、MainMenuコントロールに登録されているメニュー項目であるMenuItemオブジェクト(System.Windows.Forms名前空間)のTextプロパティに“終了(&X)”という文字列を追加することで実装できる。
  「Exit」のアクセス・キーは、MenuItemオブジェクトのTextプロパティに“&Exit”という文字列を追加することで実装できる。
  アクセス・キーの割り当てではないが、メニューのテキストの文字列にタブ文字(\t)を挿入することで余白を空けることができる(C#の場合)。例えば「タブ挿入  Ctrl+T」というテキストは、MenuItemオブジェクトのTextプロパティに“タブ挿入\t Ctrl+T”という文字列を追加することで実装できる。
  アンパサンド(&)をアクセス・キーではなく、“&”という文字にしたい場合には、「&&」とアンパサンド(&)を2つ続けて記述すればよい。例えば「&を文字として追加」というテキストは、MenuItemオブジェクトのTextプロパティに“&&を文字として追加”という文字列を追加することで実装できる。
  Buttonコントロールのアクセス・キーも、アンパサンド(&)で実現できる。例えば「終了(X)」というテキストは、ButtonコントロールのTextプロパティに“終了(&X)”という文字列を追加することで実装できる。
  LabelコントロールのTextプロパティにアンパサンド(&)文字によるアクセス・キーを設定すると、実際にはそれに続いて配置されているコントロールにアクセス・キーが割り当てられる。例えば、Labelコントロールに「お名前(&N)」というテキストを割り当てることにより、次にあるTextBoxコントロールにアクセス・キーが割り当てられる。このアクセス・キーを実行すると(つまり[Alt]+[N]キーを押すと)、TextBoxコントロールにフォーカスが移動する。

 実際にアクセス・キーを割り当てるには、コントロールのTextプロパティに対して設定する文字列の中にある「A」〜「Z」のアルファベット文字(基本的に大文字)の前にアンパサンド(&)を追加する。アクセス・キー割り当ての具体例と、それにより実現される結果は、上の画面とその説明を参考にしてほしい。

 なお、LabelコントロールのUseMnemonicプロパティをfalseに設定すれば(デフォルトはtrueとなっている)、Labelコントロールのアンパサンド(&)をアクセス・キーとしてではなく、「&」という文字として認識させることもできる(つまり上記の画面の説明にあるように、「&&」としなければならなかったのを、そのまま「&」と記述できるようになる。標準のアクセス・キーを使いたくないようなケースで役立つ機能だ)。End of Article

カテゴリ:Windowsフォーム 処理対象:キーボード
使用ライブラリ:MainMenuコントロール
使用ライブラリ:ContextMenuコントロール
使用ライブラリ:MenuItemクラス(System.Windows.Forms名前空間)
使用ライブラリ:Buttonコントロール
使用ライブラリ:Labelコントロール
使用ライブラリ:TextBoxコントロール
 
この記事と関連性の高い別の.NET TIPS
Windowsアプリケーションでショートカット・キーを割り当てるには?
PictureBoxコントロール上に文字を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

更新履歴
【2004/09/11】本記事の一部(下記の表を参照)に以下のような誤りがありました。お詫びして訂正させていただきます。

アクセス・キーの割り当てではないが、メニューのテキストの文字列にタブ文字(\t)を挿入することで余白を空けることができる。
アクセス・キーの割り当てではないが、メニューのテキストの文字列にタブ文字(\t)を挿入することで余白を空けることができる(C#の場合)。


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間