KENスクールブログ | パソコン教室・パソコン講座なら個別指導のKENスクール

BLOGKENスクールブログ

  1. KENスクール TOP >
  2. KENスクールブログ > プログラム > Visual Studioのフォームで使える小技(TabIndex)

プログラム

Visual Studioのフォームで使える小技(TabIndex)

TabIndexについて

Visual Basic , Visual C#の開発で利用される、フォームで使える小技を紹介します。
画面などの記事の内容はVisual Studio 2017 Community(Visual Basic Windowsフォームアプリケーション(.NET Framework))ですが、他のバージョンも基本的には同じです。また、Excel VBAのフォームやAccessのフォームでも同様です。

TabIndexの活用方法

下の画面のように、フォーム上に入力項目やボタンなどのコントロール(部品)が複数ある場合、連続で入力したいと思います。
入力のたびにマウスで次の項目を選択するのは効率が悪いので、できればキーボード上の操作で次の項目へ移動させたいです。

キーボードを操作した時、入力を受け付ける状態になっているコントロールの状態をフォーカスと言います。
例えば、テキストボックスをクリックし、入力を受け付ける状態になることを「フォーカスを受け取る」「フォーカスを得る」と言ったり、他のコントロールへフォーカスが移動することを「フォーカスを失う」と言ったりします。

基本的に、Tabキーを押すと、次の部品へフォーカスが移動します。ただし、その順番はフォーム上の配置場所ではなく、作成時に配置した順番が設定されます。
例えば、CheckBox1→TextBox1の順番で配置した場合、CheckBox1の操作後にTabキーを押すと、TextBox1の入力エリアにカーソルが移動します。

あとでコントロールを間に追加したくなった場合はどうすればよいでしょうか。

具体的な設定

Tabを押したときの移動の順番はTabIndexプロパティで決まります。
TabIndexプロパティはフォーム上へコントロールを配置した時に自動的に設定されます。
コントロールの種類は関係なく、0から順に自動的に1ずつ加算されて設定されます。
LabelやPanelのようにフォーカスを受け取らない部品もありますが、TabIndexは設定されます。
下の表は配置したコントロールの順番とTabIndexの初期値です。

配置した順番 コントロール TabIndex
1 Label1 0
2 TextBox1 1
3 Label2 2
4 TextBox2 3
5 Label3 4
6 TextBox3 5
7 CheckBox1 6
8 Button1 7
9 Button2 8

この場合、フォーム起動時に最初にフォーカスが設定されるのはTextBox1です。その状態からTabキーを押すとTextBox2へフォーカスが移動します。Labelはフォーカスを受け取らないので無視されます。
CheckBoxはフォーカスが設定されている状態でスペースキーを押すことで、マウスでクリックしたときのようにチェックをON/OFFできます。

コントロールを配置した後でもTabIndexを直接指定することで、作成者が意図する順番にフォーカスを移動させることができます。

また、TabStopプロパティをFalseにすることで、フォーカスを受け取れるコントロールでもフォーカスの移動の対象外に設定できます。Tabキーを押してもフォーカス設定の対象にならないだけで、マウスでの操作は可能です。

ちなみに、Shiftキーを押し名がらTabキーを押すと、逆順にフォーカスを移動できます。

この記事に関連する講座

Windowsプログラムを基礎からマスター!

詳しくはこちら