[C#] MaskedTextBoxで数字のみを入力する方法

C#のMaskedTextBoxで数字のみを入力する方法は、Maskプロパティを使用して入力フォーマットを指定することです。

Maskプロパティに"00000"のように数字の0を使用すると、その桁数分だけ数字のみの入力が可能になります。

例えば、5桁の数字のみを許可する場合は"00000"と設定します。

これにより、ユーザーは指定された桁数の数字のみを入力でき、他の文字は入力できなくなります。

また、ValidatingTypeプロパティを使用して、入力されたデータが特定の数値型に変換可能かどうかを検証することもできます。

この記事でわかること
  • MaskedTextBoxの基本的な使い方
  • 数字のみの入力を制限する方法
  • 小数点や電話番号の入力方法
  • 入力検証の実装手順
  • プログラムでのデータ取得方法

目次から探す

数字のみを入力するための設定

Maskプロパティの設定方法

MaskedTextBoxを使用する際、数字のみを入力させるためには、Maskプロパティを設定する必要があります。

このプロパティにより、ユーザーが入力できる形式を指定できます。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // MaskedTextBoxの設定
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Mask = "00000"; // 5桁の数字を入力するマスク
        maskedTextBox.Location = new Point(10, 10);
        this.Controls.Add(maskedTextBox);
    }
}

この例では、5桁の数字を入力するためのマスクを設定しています。

ユーザーは、数字以外の文字を入力できません。

数字入力用のマスクパターン

数字のみを入力するためのマスクパターンは、以下のように設定できます。

スクロールできます
マスクパターン説明
0数字(0-9)を必須
9数字または空白を許可
#数字または空白を許可(負の数も可)
Aアルファベット(大文字)を必須
aアルファベット(小文字)を必須

例えば、"00000"と設定すると、5桁の数字のみが入力可能になります。

入力制限の効果と注意点

MaskedTextBoxを使用することで、ユーザーの入力を制限し、データの整合性を保つことができます。

しかし、以下の点に注意が必要です。

  • ユーザー体験: マスクが厳しすぎると、ユーザーが入力しづらく感じることがあります。

適切なマスクを選択することが重要です。

  • エラーハンドリング: ユーザーが無効な入力を行った場合、適切なエラーメッセージを表示することが必要です。
  • データの取得: 入力されたデータは、MaskedTextBoxのTextプロパティから取得できますが、マスクに従った形式であることを確認する必要があります。

実装手順

MaskedTextBoxの配置

まず、WindowsフォームにMaskedTextBoxを配置します。

Visual Studioのデザイナーを使用するか、コードで動的に追加することができます。

以下は、コードでMaskedTextBoxを配置する例です。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // MaskedTextBoxのインスタンスを作成
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Location = new Point(10, 10); // 配置位置
        maskedTextBox.Mask = "00000"; // 5桁の数字を入力するマスク
        this.Controls.Add(maskedTextBox); // フォームに追加
    }
}

このコードでは、MaskedTextBoxをフォームに追加し、5桁の数字を入力するためのマスクを設定しています。

プロパティの設定

MaskedTextBoxには、さまざまなプロパティがあります。

以下は、特に重要なプロパティの一覧です。

スクロールできます
プロパティ名説明
Mask入力形式を指定するマスク
PromptChar入力がない場合に表示される文字
TextMaskFormat入力されたテキストのフォーマット
ValidatingType入力値の型を指定する(例:整数型)

例えば、PromptCharを設定することで、ユーザーが入力していない部分に表示される文字を変更できます。

maskedTextBox.PromptChar = '_'; // 入力がない部分にアンダースコアを表示

入力検証の実装

ユーザーがMaskedTextBoxに入力した内容が正しいかどうかを検証するためには、イベントを利用します。

以下は、入力が完了した際に検証を行う例です。

private void maskedTextBox_Leave(object sender, EventArgs e)
{
    MaskedTextBox maskedTextBox = sender as MaskedTextBox;
    // 入力が正しいか検証
    if (!maskedTextBox.MaskFull)
    {
        MessageBox.Show("正しい数字を入力してください。");
        maskedTextBox.Focus(); // 再度フォーカスを当てる
    }
}

この例では、MaskedTextBoxからフォーカスが外れたときに、入力が完全でない場合に警告メッセージを表示します。

これにより、ユーザーが正しい形式で入力するよう促すことができます。

応用例

小数点を含む数値の入力

MaskedTextBoxを使用して小数点を含む数値を入力する場合、マスクを工夫する必要があります。

以下のように、整数部と小数部を分けてマスクを設定します。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 小数点を含む数値のMaskedTextBoxを作成
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Mask = "00000.00"; // 5桁の整数部と2桁の小数部
        maskedTextBox.Location = new Point(10, 10);
        this.Controls.Add(maskedTextBox);
    }
}

この例では、5桁の整数部と2桁の小数部を持つ数値を入力できるように設定しています。

ユーザーは、数字と小数点のみを入力できます。

電話番号や郵便番号の入力

電話番号や郵便番号の入力にもMaskedTextBoxは便利です。

例えば、電話番号の入力マスクを設定する場合、以下のようにします。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 電話番号用のMaskedTextBoxを作成
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Mask = "(999) 000-0000"; // 電話番号のマスク
        maskedTextBox.Location = new Point(10, 10);
        this.Controls.Add(maskedTextBox);
    }
}

この例では、電話番号の形式 (XXX) XXX-XXXX を指定しています。

ユーザーは、指定された形式に従って入力することが求められます。

郵便番号の場合も同様に、以下のように設定できます。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 郵便番号用のMaskedTextBoxを作成
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Mask = "999-9999"; // 郵便番号のマスク
        maskedTextBox.Location = new Point(10, 10);
        this.Controls.Add(maskedTextBox);
    }
}

この例では、郵便番号の形式 XXX-XXXX を指定しています。

日付の入力フォーマット

日付の入力にもMaskedTextBoxを利用できます。

以下のように、日付の形式を指定することができます。

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 日付用のMaskedTextBoxを作成
        MaskedTextBox maskedTextBox = new MaskedTextBox();
        maskedTextBox.Mask = "00/00/0000"; // 日付のマスク
        maskedTextBox.Location = new Point(10, 10);
        this.Controls.Add(maskedTextBox);
    }
}

この例では、日付の形式 MM/DD/YYYY を指定しています。

ユーザーは、正しい日付形式で入力することが求められます。

これにより、日付の整合性を保つことができます。

よくある質問

MaskedTextBoxで他の文字を入力できないようにするには?

MaskedTextBoxを使用することで、特定の形式に従った入力を強制することができます。

数字のみを入力させたい場合は、Maskプロパティを設定することで実現できます。

例えば、maskedTextBox.Mask = "00000";と設定することで、5桁の数字のみを入力可能にします。

このようにマスクを設定することで、他の文字を入力できないように制限できます。

入力された数字をプログラムで取得する方法は?

MaskedTextBoxに入力された数字は、Textプロパティを使用して取得できます。

以下のように記述します。

string inputValue = maskedTextBox.Text; // 入力された値を取得

このコードを使用することで、ユーザーがMaskedTextBoxに入力した内容をプログラム内で利用することができます。

マスクに従った形式で取得されるため、データの整合性が保たれます。

MaskedTextBoxとTextBoxの違いは何ですか?

MaskedTextBoxとTextBoxの主な違いは、入力形式の制御にあります。

  • MaskedTextBox:
  • 入力形式をマスクで指定できる。
  • 特定の形式(例:電話番号、日付など)に従った入力を強制できる。
  • ユーザーが入力できる文字を制限できる。
  • TextBox:
  • 自由なテキスト入力が可能。
  • 入力形式の制御がないため、ユーザーが任意の文字を入力できる。
  • データの整合性を保つためには、別途検証処理が必要。

このように、MaskedTextBoxは特定の形式の入力を必要とする場合に便利であり、TextBoxは自由なテキスト入力が求められる場合に適しています。

まとめ

この記事では、C#のMaskedTextBoxを使用して数字のみを入力する方法について詳しく解説しました。

具体的には、MaskedTextBoxの配置やプロパティの設定、入力検証の実装方法、さらには小数点を含む数値や電話番号、日付の入力フォーマットの応用例についても触れました。

これらの知識を活用することで、ユーザーが正しい形式でデータを入力できるようにすることが可能です。

ぜひ、実際のプロジェクトにMaskedTextBoxを取り入れて、ユーザー体験を向上させてみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • URLをコピーしました!
目次から探す