[C#] MaskedTextBoxでの入力制限の設定方法
MaskedTextBoxは、C#のWindows Formsアプリケーションで使用されるコントロールで、ユーザーの入力を特定の形式に制限するために利用されます。
入力制限を設定するには、MaskedTextBoxのMask
プロパティを使用します。
このプロパティにマスク文字列を指定することで、入力形式を制御できます。
例えば、電話番号の形式を指定する場合は(999) 000-0000
のように設定します。
ここで9
は任意の数字、0
は必須の数字を示します。
これにより、ユーザーが指定された形式に従って入力することを強制できます。
入力制限の設定方法
C#のWindowsフォームアプリケーションにおいて、MaskedTextBox
を使用することで、ユーザーの入力を制限することができます。
これにより、特定の形式でのデータ入力を促すことができ、データの整合性を保つことが可能です。
以下では、MaskedTextBox
で設定できる入力制限の方法について詳しく解説します。
マスク文字の種類と意味
MaskedTextBox
では、さまざまなマスク文字を使用して入力形式を指定できます。
以下は、主なマスク文字とその意味です。
マスク文字 | 意味 |
---|---|
0 | 数字(0-9) |
9 | 数字または空白 |
A | アルファベット(A-Z, a-z) |
a | アルファベットまたは空白 |
L | 任意の文字(1文字) |
? | 任意の文字(0文字以上) |
* | 任意の文字(0文字以上) |
. | 小数点 |
数字入力の制限
数字のみの入力を制限するためには、MaskedTextBox
のMask
プロパティに"00000"
のように設定します。
これにより、5桁の数字のみが入力可能になります。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "00000"; // 5桁の数字を入力するマスク
}
}
この設定により、ユーザーは5桁の数字のみを入力できるようになります。
日付入力の制限
日付の入力を制限する場合は、"00/00/0000"
のようにマスクを設定します。
これにより、ユーザーは日付をMM/DD/YYYY
形式で入力することが求められます。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "00/00/0000"; // MM/DD/YYYY形式の日付を入力するマスク
}
}
この設定により、正しい日付形式での入力が強制されます。
電話番号入力の制限
電話番号の入力を制限する場合は、"(999) 000-0000"
のようにマスクを設定します。
これにより、ユーザーは電話番号を特定の形式で入力することが求められます。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "(999) 000-0000"; // 電話番号のマスク
}
}
この設定により、電話番号の形式が統一され、入力ミスを防ぐことができます。
カスタムマスクの作成
特定の要件に応じてカスタムマスクを作成することも可能です。
例えば、郵便番号の入力を制限する場合は、"00000-0000"
のように設定します。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "00000-0000"; // 郵便番号のカスタムマスク
}
}
このように、MaskedTextBox
を使用することで、さまざまな形式の入力制限を簡単に設定することができます。
MaskedTextBoxの応用
MaskedTextBox
は、単独で使用するだけでなく、他のコントロールと連携させることで、より高度なユーザーインターフェースを構築することができます。
以下では、MaskedTextBox
の応用方法について解説します。
複数のMaskedTextBoxを連携させる
複数のMaskedTextBox
を連携させることで、ユーザーが入力したデータを相互に関連付けることができます。
例えば、電話番号とその国コードを別々のMaskedTextBox
で入力させる場合、以下のように設定します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "+99 (999) 000-0000"; // 国コードと電話番号
maskedTextBox2.Mask = "00/00/0000"; // 日付
}
}
このように設定することで、ユーザーは国コードと電話番号を別々に入力でき、データの整合性を保つことができます。
入力エラーのハンドリング
ユーザーが不正な形式で入力した場合、エラーメッセージを表示することで、適切な入力を促すことが重要です。
MaskedTextBox
のValidating
イベントを使用して、入力内容を検証することができます。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Validating += MaskedTextBox1_Validating;
}
private void MaskedTextBox1_Validating(object sender, CancelEventArgs e)
{
if (!maskedTextBox1.MaskFull) // マスクが完全でない場合
{
MessageBox.Show("正しい形式で入力してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
e.Cancel = true; // フォーカスを戻す
}
}
}
この設定により、ユーザーが不正な入力を行った場合にエラーメッセージが表示され、再入力を促すことができます。
ユーザー入力のリアルタイム検証
ユーザーが入力を行う際に、リアルタイムで検証を行うことで、即座にフィードバックを提供することができます。
TextChanged
イベントを使用して、入力内容を検証することが可能です。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.TextChanged += MaskedTextBox1_TextChanged;
}
private void MaskedTextBox1_TextChanged(object sender, EventArgs e)
{
if (maskedTextBox1.MaskFull) // マスクが完全な場合
{
// 入力が正しい場合の処理
labelStatus.Text = "入力が正しいです。";
}
else
{
// 入力が不完全な場合の処理
labelStatus.Text = "入力が不完全です。";
}
}
}
このように、ユーザーが入力するたびにリアルタイムで検証を行い、状態を表示することで、より良いユーザーエクスペリエンスを提供することができます。
MaskedTextBoxのデザインカスタマイズ
MaskedTextBox
は、デフォルトのスタイルだけでなく、フォントや色、プレースホルダーテキストなどをカスタマイズすることで、アプリケーションのデザインに合わせた見た目を実現できます。
以下では、MaskedTextBox
のデザインカスタマイズ方法について解説します。
フォントと色の変更
MaskedTextBox
のフォントや背景色、文字色を変更することで、ユーザーインターフェースをより魅力的にすることができます。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Font = new Font("Arial", 12); // フォントの設定
maskedTextBox1.BackColor = Color.LightYellow; // 背景色の設定
maskedTextBox1.ForeColor = Color.DarkBlue; // 文字色の設定
}
}
この設定により、MaskedTextBox
の見た目が変更され、ユーザーにとって視認性が向上します。
プレースホルダーテキストの設定
プレースホルダーテキストを設定することで、ユーザーに入力形式を示すことができます。
MaskedTextBox
には直接的なプレースホルダーテキストのプロパティはありませんが、Text
プロパティを使用して初期値を設定することができます。
以下はそのサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "00/00/0000"; // 日付のマスク
maskedTextBox1.Text = "MM/DD/YYYY"; // プレースホルダーテキストの設定
maskedTextBox1.ForeColor = Color.Gray; // プレースホルダーテキストの色
}
}
このように設定することで、ユーザーはどの形式で入力すればよいかを視覚的に理解しやすくなります。
プレースホルダーテキストは、ユーザーが入力を開始すると消えるようにすることが一般的です。
マスクの表示と非表示の切り替え
ユーザーが入力した内容を見やすくするために、マスクの表示と非表示を切り替える機能を実装することができます。
例えば、パスワード入力時にマスクを切り替える場合、以下のように設定します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
maskedTextBox1.Mask = "0000-0000"; // 郵便番号のマスク
buttonToggleMask.Click += ButtonToggleMask_Click; // ボタンのクリックイベント
}
private void ButtonToggleMask_Click(object sender, EventArgs e)
{
if (maskedTextBox1.MaskFull) // マスクが完全な場合
{
maskedTextBox1.Mask = ""; // マスクを非表示にする
}
else
{
maskedTextBox1.Mask = "0000-0000"; // マスクを表示する
}
}
}
この設定により、ユーザーはボタンをクリックすることで、マスクの表示と非表示を切り替えることができ、必要に応じて入力内容を確認することができます。
まとめ
この記事では、C#のMaskedTextBox
を使用した入力制限の設定方法やデザインカスタマイズのテクニックについて詳しく解説しました。
特に、マスク文字の種類や日付、電話番号などの特定の形式での入力制限、さらには複数のMaskedTextBox
を連携させる方法やリアルタイムでの入力検証についても触れました。
これらの知識を活用することで、ユーザーにとって使いやすいインターフェースを構築することが可能です。
ぜひ、実際のプロジェクトにMaskedTextBox
を取り入れて、ユーザーエクスペリエンスを向上させてみてください。