SHOEISHA iD

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

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

特集記事

C#の入力チェック実例サンプルコード

全角チェックや数値チェックなどの基本的な実装方法


ダウンロード 実行ファイル (11.5 KB)
ダウンロード ソースコード (21.7 KB)

通貨型の入力チェック

 「\」記号が付加されていたり、数字がカンマで区切られたりする通貨型の表記および入力を行う方法です。通貨型の入力が正しいかどうかは、以下の順に判断します。

  1. テキストボックスのキー入力は通常の数値入力時と同様にKeyCharで判別し、整数値とBackSpaceのみを許可します。
  2. OnEnterメソッドでフォーカスを取得したら、チェック行います。
  3. 通貨型フォーマットで入力されたものを数値型に変換するため、円マーク(\)とカンマ(,)をTextプロパティから削除します。
  4. 数値の入力チェックを行います。
  5. チェックが終わった数値を通貨型に戻します。通貨型のフォーマットを形成するには、テキストボックスの内容をint型に変換し、Int32クラスのToStringメソッドでFormatを指定して変更します。

 以下、実際のソースです。まず、OnEnterメソッドとOnLeaveメソッドをオーバーライドします。

protected override void OnEnter(EventArgs e)
{
    base.OnEnter (e);
}

protected override void OnLeave(EventArgs e)
{
    base.OnLeave (e);
}

 数値型への変換のため、OnEnterメソッドに、以下のロジックを追加します。this.Text.Remove( index, 1 )部分で先頭の円マークを削除し、Replace(",", string.Empty)部分でカンマを空白(string.Empty)に変換して削除します。

OnEnterメソッド
int index = this.Text.IndexOf("\\");
if ( index >= 0 )
{
    this.Text
      = this.Text.Remove( index, 1 ).Replace(",", string.Empty); 
}

 数値に変換したら入力チェックを行います。数値のチェックですので、正規表現^[0-9]+$で行います。

 チェックが終わったら通貨型に戻します。OnLeaveメソッドを使い、フォーカスが離れたときに数値型のフォーマットから通貨型のフォーマットに変更しています。通貨型のフォーマットを形成するには、テキストボックスの内容をint型に変換し、Int32クラスのToStringメソッドでFormatを指定し、通貨表記に変更します。

OnLeaveメソッド
if ( this.Text.Length != 0 )
{
    this.Text = Convert.ToInt32(this.Text).ToString("C");
}

フォーカスが移動した際に行われる入力チェック

 フォーカスが移動するときに入力チェックを行うことも可能です。上記の入力チェックメソッドをプロパティにより実行する/しないを設定できるようにしておけば、拡張したコントロールを利用するアプリケーション側でいろいろと利用することができます。

 まず、OnValidatingのオーバーライドを追加します。

protected override void OnValidating(
                             System.ComponentModel.CancelEventArgs e)
{
    base.OnValidating (e);
}

 入力チェックメソッドを呼び出します。

string errorMessage = this.InputCheck();

 入力チェックに引っかかった場合、errorMessageにエラー内容が格納されます。あとは必要に応じて、エラーメッセージをMessageBoxやErrorProviderで表示することができます。

標準のプロパティとの併用について

 標準のTextBoxには、入力できる文字の最大数を制御する「MaxLength」や、コントロールの IME (Input Method Editor) モードを制御する「ImeMode」プロパティが存在します。これらを併用することで、より決め細やかな入力制御を行うことができると思います。

次のページ
チェックをはずせるラジオボタン

修正履歴

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

特集記事連載記事一覧

もっと読む

この記事の著者

高山 昌悟(タカヤマ ショウゴ)

今までは主に、Windowsアプリケーションの開発を行ってきました。最近はWebアプリケーションの開発を行っています。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1083 2007/04/16 17:26

イベント

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

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

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

メールバックナンバー