標準コントロールよりも柔軟な操作性
InputMan付属コントロールにあるExitOnLastCharプロパティとExitOnLeftRighKeyプロパティを使うと、今までKeyPressイベントやChangeイベントで行っていた「最大文字数を入れたら次のコントロールに移動する」「左右の矢印キーでコントロールのフォーカスを移動する」などの操作性向上のためのコードを一切書かずに、同じ操作が実現できます。
ExitOnLastCharプロパティ
「ExitOnLastCharプロパティ」をTrueに設定することで、想定された最大文字列長まで文字列を入力すると自動的に次のコントロールに移動します。
本稿に添付したCZ0907ExitOnLastCharサンプルは、[ExitOnLastChar]チェックボックスをチェックすれば、画面上にあるコントロールのExitOnLastCharプロパティの値をTrueに書き換えます。これだけで、例えばGcComboBoxに「11111
」と5桁の文字を入力すると自動的にフォーカスがGcDateに移ります。
ExitOnLastCharプロパティによる動きをさらに便利な操作性に結びつけるには、リスト1にあるように、次の2つの処理を追加するとよいでしょう。
Private Sub Me_Form_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load For Each ctl As GrapeCity.Win.Editors.EditBase In Me.GcContainer1.Controls ctl.EditMode = GrapeCity.Win.Editors.EditMode.FixedOverwrite AddHandler ctl.Enter, AddressOf TopSelectStart Next End Sub Private Sub TopSelectStart(ByVal sender As System.Object, _ ByVal e As System.EventArgs) CType(sender, GrapeCity.Win.Editors.EditBase).SelectionStart = 0 End Sub
- 各コントロールのEditModeプロパティの値を上書きモード(
FixedOverwrite
) - 各コントロールのEnterイベントでカーソルを先頭にする(
SelectionStart=0
)
リスト1では説明の都合によりEditModeプロパティをForm_Loadイベントプロシージャで設定していますが、事前にプロパティとして設定しておくとよいでしょう。実行時のコードとして記述が必要なのは、Enterイベント関連だけということになります。たったこれだけのコードで「全部入力し終えたら自動的に次の入力欄に移動」という操作性が実現できます。
多機能コントロールの実力を発揮させるプロパティページ
InputMan付属コントロールは多機能であるがゆえに、プロパティの数が標準コントロールよりも多くなっています。そこで生じる問題として、どのプロパティを指定すればよいのかわからない、どんな機能があるのかわからない、というものが考えられます。
その問題の解決策として、InputMan付属コントロールではコントロールのタスク一覧を積極的に利用しています。
GcComboBoxコントロールの特徴である「ドロップダウンしたリストにヘッダをつけるかどうか」といった設定もタスク一覧にあるので、GcComboBoxコントロールならではの拡張機能に対する“気付き”にもなると思います。