■TextBoxとフォーカス

製品版『おたすけ忍風伝』をハードディスクにインストールするとき、最初にCD KEY番号を入力するようになっている。これは、他のアプリケーションでもよく見かける単純なチェックシステムだ。しかし、こんな何気ないプログラムにも、それなりの配慮が求められているのである。

その配慮とは、入力エリアでカーソルがチッカチッカと点滅していること。つまり、そのままの状態で数字をキーボードから入力できるようになっているのだ。この入力カーソルの点滅がないと、マウスカーソルを入力エリアに移動してクリックしなければならない。数あるソフトウェアの中には、こういった配慮など「気にしな〜い!」というものもあるが、それだけでソフトウェア本体の評価も下げたくなってしまう。

入力エリアとは、いうまでもなくテキストボックス(TextBox)コントロール。ここにフォーカスがあれば入力カーソルは点滅する。しかし、単にSetFocusメソッドを実行しただけではうまくいかないときがあるから、やっかいなのだ。


例:Text1にフォーカスを当てる
Text1.SetFocus

例えば、非表示としていたフォームを表示させ、その中のテキストボックスにフォーカスを当てたいとしよう。このメソッドが有効に機能すればよいが、期待どおりに機能しなかったときにイライラが募る。もちろん、これは偶然の産物ではなく、ダメな場合は何度トライしてもダメ。実際、意に反してそういう状況に遭遇すると、いろいろと試行錯誤を繰り返すハメに陥る。

結局、こういう不安定なケースがあるときは、違う方法を考えたほうがよい。つまり、水平思考というわけだ。この場合なら、フォーム表示と同時に最初からテキストボックスにフォーカスが当たれば、わざわざフォーカスを変更する必要がないことになる。そして、その順位を決定しているのがTabIndexプロパティなのだ。

これは、本来は[Tab]キーを使って親フォームに含まれるコントロールのフォーカスを移動するときの順序 (タブオーダー) を設定するものだが、初期フォームではこの先頭コントロールにフォーカスが当たる。すなわち、先ほどの例ではText1コントロールのTabIndexプロパティ=0としておけば、何もしないでもText1にフォーカスが当たって入力カーソルが点滅するというわけ。知ってしまえば配慮というほどの処置ではないので、ぜひ覚えておきたい基礎テクニックといえるだろう。