C#でWindowsフォームアプリケーションを開発する際、特定の文字種のみをTextBoxに入力させたいケースがよくあります。特に、半角英数字と半角カナ文字のみを許可する要件は、データ入力フォームやユーザー情報登録画面などでよく見られます。この記事では、C#を使用してTextBoxに半角英数字と半角カナ文字のみを入力可能にする方法を、初心者にも分かりやすく解説します。
目次
TextBoxの入力制限の実装方法
TextBoxの入力を制限するには、主にKeyPressイベントを使用します。このイベントは、ユーザーがキーを押すたびに発生し、入力される文字を制御することができます。以下に、半角英数字と半角カナ文字のみを許可する実装方法を示します。
using System;
using System.Windows.Forms;
using System.Text.RegularExpressions;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.KeyPress += TextBox1_KeyPress;
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 制御文字(バックスペースなど)は入力を許可
if (char.IsControl(e.KeyChar))
{
return;
}
// 半角英数字、半角カナ、スペースのみ許可
if (!Regex.IsMatch(e.KeyChar.ToString(), @"^[a-zA-Z0-9ヲ-゚\s]$"))
{
e.Handled = true; // 入力をキャンセル
}
}
}
このコードの主なポイントは以下の通りです:
- TextBox(textBox1)のKeyPressイベントに、TextBox1_KeyPressメソッドを登録します。
- 制御文字(バックスペースなど)は常に入力を許可します。これにより、ユーザーが入力を訂正できるようになります。
- 正規表現を使用して、入力された文字が半角英数字、半角カナ、またはスペースであるかをチェックします。
[a-zA-Z0-9]
: 半角英数字ヲ-゚
: 半角カナ文字の範囲\s
: スペース
- 条件に合わない文字が入力された場合、
e.Handled = true;
を設定して入力をキャンセルします。
入力された文字列の検証
KeyPressイベントでの制御に加えて、TextBoxの内容全体を検証することも重要です。以下のメソッドを使用して、文字列全体が半角英数字と半角カナ文字のみで構成されているかを確認できます。
private bool IsValidInput(string input)
{
return Regex.IsMatch(input, @"^[a-zA-Z0-9ヲ-゚\s]*$");
}
このメソッドは、例えばTextBoxのTextChangedイベントや、フォームの送信時に使用できます。
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!IsValidInput(textBox1.Text))
{
// 無効な入力の場合の処理
// 例: エラーメッセージの表示やテキストの色を変更など
textBox1.ForeColor = Color.Red;
}
else
{
textBox1.ForeColor = Color.Black;
}
}
まとめ
C#でTextBoxに半角英数字と半角カナ文字のみを入力可能にする方法として、KeyPressイベントと正規表現を組み合わせた方法を紹介しました。この方法には以下のような利点があります:
- リアルタイムで入力を制御できる
- 柔軟性が高く、必要に応じて許可する文字種を調整できる
- ユーザーエクスペリエンスを損なわずに入力を制限できる
この技術を使用することで、ユーザーからの入力エラーを防ぎ、データの整合性を保つことができます。ユーザー情報の入力フォームや、特定のフォーマットでのデータ入力が必要なアプリケーションなど、様々な場面で活用できるでしょう。
コメント