SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)

日本を知り尽くした入力支援コンポーネントの真髄!
「InputMan for Windows Forms」徹底解説

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (50.6 KB)

標準コントロールよりも柔軟な操作性

 InputMan付属コントロールにあるExitOnLastCharプロパティとExitOnLeftRighKeyプロパティを使うと、今までKeyPressイベントやChangeイベントで行っていた「最大文字数を入れたら次のコントロールに移動する」「左右の矢印キーでコントロールのフォーカスを移動する」などの操作性向上のためのコードを一切書かずに、同じ操作が実現できます。

ExitOnLastCharプロパティ

 「ExitOnLastCharプロパティ」をTrueに設定することで、想定された最大文字列長まで文字列を入力すると自動的に次のコントロールに移動します。

図5 ExitOnLastCharプロパティをサポートするコントロール(サンプルソース内「CZ0907ExitOnLastChar」参照)
図5 ExitOnLastCharプロパティをサポートするコントロール

 本稿に添付したCZ0907ExitOnLastCharサンプルは、[ExitOnLastChar]チェックボックスをチェックすれば、画面上にあるコントロールのExitOnLastCharプロパティの値をTrueに書き換えます。これだけで、例えばGcComboBoxに「11111」と5桁の文字を入力すると自動的にフォーカスがGcDateに移ります。

 ExitOnLastCharプロパティによる動きをさらに便利な操作性に結びつけるには、リスト1にあるように、次の2つの処理を追加するとよいでしょう。

リスト1 CZ0907ExitOnLastChar_Form.vb
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
  1. 各コントロールのEditModeプロパティの値を上書きモード(FixedOverwrite
  2. 各コントロールのEnterイベントでカーソルを先頭にする(SelectionStart=0

 リスト1では説明の都合によりEditModeプロパティをForm_Loadイベントプロシージャで設定していますが、事前にプロパティとして設定しておくとよいでしょう。実行時のコードとして記述が必要なのは、Enterイベント関連だけということになります。たったこれだけのコードで「全部入力し終えたら自動的に次の入力欄に移動」という操作性が実現できます。

多機能コントロールの実力を発揮させるプロパティページ

 InputMan付属コントロールは多機能であるがゆえに、プロパティの数が標準コントロールよりも多くなっています。そこで生じる問題として、どのプロパティを指定すればよいのかわからない、どんな機能があるのかわからない、というものが考えられます。

 その問題の解決策として、InputMan付属コントロールではコントロールのタスク一覧を積極的に利用しています。

図6 タスクの例(GcComboBoxタスク)
図6 タスクの例(GcComboBoxタスク)

 GcComboBoxコントロールの特徴である「ドロップダウンしたリストにヘッダをつけるかどうか」といった設定もタスク一覧にあるので、GcComboBoxコントロールならではの拡張機能に対する“気付き”にもなると思います。

次のページ
PlusPakコントロール

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4205 2009/07/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング