SHOEISHA iD

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

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

ComponentZine(InputMan)

.NETでコンポーネントを利用し多彩な入力処理を行う

InputMan for .NET 4.0Jによる便利な入力インターフェイスの組み込み

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

 テキストボックスへの入力を半角英字やE-Mailアドレスに限定したい、フォームに独自のファンクションキーを組み込みたい、コントロールのデフォルトのプロパティ値が変更できたらいいのに、といったVS標準のコントロールだけではできない処理を実現する便利な方法を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加
指定した文字・記号しか入力を受け付けない
指定した文字・記号しか入力を受け付けない
英字を文字単位で折り返す
英字を文字単位で折り返す
独自のファンクションキーをフォームに組み込む
独自のファンクションキーをフォームに組み込む

はじめに

 テキストボックスに半角の英字だけしか入力できないようにしたい、E-Mailアドレス入力専用のテキストボックスが欲しい、フォームに独自のファンクションキーを組み込みたい、コントロールのデフォルトのプロパティ値が変更できたらいいのに、など。

 そんなVisual Studio(以下、VS)の標準コントロールではできない処理も、InputMan for .NET 4.0Jというコンポーネントを使うと、簡単に実現できます。

 本稿では、次のテクニックを紹介します。

  1. 半角の英数字だけ入力を受け付ける
  2. 半角の英数字と「.」「@」記号だけ入力を受け付ける
  3. コントロールのプロパティのデフォルト値を変更する
  4. テキストボックスに入力した英字を文字単位で折り返す
  5. 独自のファンクションキーをフォームに組み込む

対象読者

 Visual Basic 2005を使ってプログラムを作ったことのある人。

必要な環境

 Visual Basic 2005またはVisual Studio 2005でプログラムが作れる環境。

プログラム実行時の注意事項

 本稿の実行ファイル(バイナリファイル)を動かすには、zipファイルに同梱してある以下のファイルが必要になります。

  1. GrapeCity.Win.Input.v40.dll

 これらのファイルを、実行プログラムと同じフォルダに格納します。

 また、.NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0がインストールされていることが必須条件です。

コンポーネントのインストール

 はじめてInputMan for .NET 4.0Jを使用する方は、プロジェクトにInputMan for .NET 4.0Jをインストールする必要があります。

 インストーラは、グレープシティ社のWebページからダウンロードできますので、ここから入手してインストールしてください。製品ページ左側の[ダウンロード]-[トライアル版]をクリックし、ダウンロード方法([FTP]または[HTTP])を選択します。ファイルはLZH形式で圧縮されています。

 有償のコンポーネントですが、プロダクトキーを入力せずにインストールすることで、トライアル版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールの追加

 InputMan for .NET 4.0Jをインストールしたら、ツールボックスに専用のタブを作成し、InputMan for .NET 4.0Jのコンポーネントを追加します。追加するコンポーネントは、[.NET Frameworkコンポーネント]タブの名前空間が「GrapeCity.Win.Input」で始まるコンポーネントです。

「GrapeCity.Win.Input」で始まる名前空間のコンポーネントを追加する
「GrapeCity.Win.Input」で始まる名前空間のコンポーネントを追加する

指定した文字・記号しか入力を受け付けない

 データ入力の際に、指定した文字しか入力できないようにしたい場合がありますが、VS標準のテキストボックスでは、面倒な入力処理を実装する必要があるため面倒です。

 InputManのマスクエディットコンポーネントを使うと、簡単に入力制限を設定できます。

半角の英数字だけ入力を受け付ける

 半角の英数字だけを入力できるようにしたい場合は、マスクエディットのタスクメニューから[書式を設定]を選び、[書式]で[半角-大文字のアルファベット][半角-小文字のアルファベット]を選びます。

書式の設定
書式の設定

 [書式]欄に「\A\a」と入力されますので、続けて「*」記号を入力します。

 「\A」が半角英字の大文字をあらわし、「\a」が半角英字の小文字を表します。また、「*」は入力文字数をいくつでも受け入れられるようにする記号です。

 この設定で、マスクエディットには半角の英字しか入力できなくなります。

半角の英数字と「.」「@」記号だけ入力を受け付ける

 入力制限に数字を指定する場合は、Formatプロパティに「\D」を指定します。また、特定の記号の入力を受け付けるようにするには、「\」とその記号を組み合わせて指定します。例えば、メールアドレスの入力に半角小文字の英字と数字、「-」「.」「@」以外の記号は入力できないようにするには、マスクエディットのタスクメニューから[書式を設定]を選び、[書式]欄に次のように入力します。

[\a\D\@\.\-]*

 マスクする文字や記号を[]で囲むようにして、最後に*記号を付けます。

 この[]は、マスクエディットに入力された文字が、[]内の文字のどれか1つにマッチすることを表す記号です。コンポーネントにあらかじめ設定されている\aや\A以外に、独自に記号などを指定する場合は[]で囲むようにします。

 また、[書式の設定]ダイアログでは、コンポーネントにフォーカスがある場合とない場合の表示文字を設定できます。

メールアドレスに使用する文字と記号しか入力できないように書式を設定する
メールアドレスに使用する文字と記号しか入力できないように書式を設定する

コントロールのプロパティのデフォルト値を変更する

 ツールボックスからコントロールを選んでフォームに配置したとき、プロパティにはデフォルトの値が設定されていますが、これをカスタマイズして専用の設定値を組み込みたい場合があります。

 例えば、あるコントロールのValueプロパティの値が、デフォルトで「0」になっているのを「100」に変更したい場合、残念ながらVS標準のコントロールではこのような操作を行うことはできません。

 しかし、InputManのコンポーネント群はプロパティのデフォルト値を自由に設定できるようになっているため、簡単に実現できます。

 方法は簡単で、まずプロパティウィンドウでプロパティの値を変更し、タスクメニューから[コントロールの既定値に設定]を選びます。プロパティ一覧のウィンドウが開くので、後は既定値に設定したいプロパティにチェックを入れるだけです。

 これで、次回以降そのコントロールをツールボックスからフォームに配置すると、プロパティのデフォルト値が変更した値に変わります。

NumberコンポーネントのMaxValue、MinValue、Valueプロパティのデフォルト値を変更しコントロールの既定値に設定する
NumberコンポーネントのMaxValue、MinValue、Valueプロパティのデフォルト値を変更しコントロールの既定値に設定する

テキストボックス(エディット)に入力した英字を文字単位で折り返す

 VSのテキストボックスを複数行編集に設定し、入力した文章を右端で折り返すようにWordWrapプロパティをTrueに設定すると、行末にきた英単語が単語単位で折り返されます。これは、そもそも英語圏で開発されたVSを日本語に移植したために、このような仕様になっています。しかし、単語単位で折り返すのではなく、文字単位で折り返したいときもあります。

 InputManのエディットコンポーネントでは、CharacterWrapプロパティを使って、WordWrapのモードを単語単位で行うのか文字単位で行うのかを選べるようになっています。

英字も文字単位で折り返すようになる
英字も文字単位で折り返すようになる

独自のファンクションキーをフォームに組み込む

 フォームに独自のファンクションキーを組み込みたいと思ったことはありませんか? もしそんなことができるのであれば、よりユーザーフレンドリーなアプリケーションを作ることができますよね。

 InputManのFunctionkeyコンポーネントは、カスタマイズ可能なファンクションキーをフォームに組み込むことができます。

 ここでは、8個のファンクションキーをフォームに設定する方法を紹介します。

独自のファンクションキーを組み込んだフォーム
独自のファンクションキーを組み込んだフォーム

コンポーネントの配置とデザイン

 コンポーネントをフォームに配置し、次の2つのプロパティを設定します。

1.キーの配列:KeySetsプロパティ

 このKeySetsプロパティは、ファンクションキー1つ1つのスタイルをデザインするプロパティで、ボタン表面の文字やイメージの組み込み、ボタンの個数などを設定します。設定は、KeySetsプロパティの値欄をクリックすると表示されるコレクションエディタで行います。

 各ボタンの設定は、コレクションエディタのボタンリストから、設定したいボタンを選びそれぞれのプロパティ値を変更します。

コレクションエディタでボタン個々の設定を行う
コレクションエディタでボタン個々の設定を行う

 また、FunctionKeyコンポーネントをフォームに配置すると、デフォルトでは16個のファンクションキーが組み込まれます。この数を調整したい場合は、コレクションエディタの[ボタン配列...]をクリックすると、使用するファンクションキーの配置をデザインするキーセットエディタが表示されます。

 このエディタで[表示するボタン配列]欄にあるファンクションキーをドラッグ&ドロップして、数の増減や配置位置を設定します。

キーセットエディタで使用するファンクションキーを設定する
キーセットエディタで使用するファンクションキーを設定する

2.ファンクションキーの外観上の設定:StyleSetsプロパティ

 StyleSetsプロパティは、FunctionKeyコンポーネントのボタン形状を設定するプロパティです。値欄をクリックすると、StyleSetsコレクションエディタが起動します。

 [追加]ボタンの横の▼ボタンを押して、設定したいスタイルを選び、各プロパティを操作してデザインを変更します。

スタイルがリスト表示される
スタイルがリスト表示される

 StyleSetsプロパティでスタイルを設定したら、ActiveStyleSetプロパティにそのスタイルを設定すると、FunctionKeyコンポーネントにスタイルが適用されます。

キーが押された場合の処理

 ユーザーがファンクションキーを押すと、コンポーネントには「FunctionKey_FunctionKeyPress」というイベントが発生します。イベントハンドラでは、引数eKeyプロパティに押されたファンクションキーの位置がButtonKeys型の値で格納されるので、これを使用してユーザーがどのキーを押したのかを判断して処理を振り分けます。

 次のコードは、[F1]キーを押すとメッセージを表示し、[F8]キーを押すとプログラムを終了します。

Private Sub FunctionKey1_FunctionKeyPress( _
    ByVal sender As System.Object, _
    ByVal e As GrapeCity.Win.Input.FunctionKeyPressEventArgs _
    ) Handles FunctionKey1.FunctionKeyPress

    If e.Key = GrapeCity.Win.Input.ButtonKeys.F1 Then
        MessageBox.Show("データを計測器から入力します。")
    ElseIf e.Key = GrapeCity.Win.Input.ButtonKeys.F8 Then
        Me.Close()
    End If
End Sub

まとめ

 VS標準のコントロールではできない機能も、InputManを使うことで容易に実現できるようになります。

 多くの場合、データ入力には業務に固有の表示形式やデータ形式を使うので、入力値に制限を設けておけばつまらない入力ミスを撲滅できますし、独自のファンクションキーをアプリケーションに組み込めれば、処理の場面によってファンクションキーの機能を入れ替えるといったことも容易です。

 これらInputManが持っている機能を利用すると、プログラムの品質や生産性をかなり向上できるのではないでしょうか。

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/936 2009/03/17 11:58

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング