[C#] TextBoxで半角英数字のみを許可する方法
C#でTextBoxに半角英数字のみを許可する方法は、主にイベントハンドラを使用して実現します。
具体的には、TextBoxのKeyPress
イベントを利用します。
このイベントで入力されたキーが半角英数字かどうかをチェックし、許可されていない場合はe.Handled
をtrue
に設定して入力を無効にします。
半角英数字は、ASCIIコードで48から57(数字)、65から90(大文字アルファベット)、97から122(小文字アルファベット)に該当します。
これにより、ユーザーがTextBoxに入力できる文字を制限することができます。
- TextBoxで半角英数字を制限する方法
- KeyPressイベントの活用法
- 特定の記号や数字の許可方法
- 大文字小文字の自動変換の実装
- 複数のTextBoxへの適用方法
半角英数字のみを許可する方法
C#のWindowsフォームアプリケーションにおいて、TextBoxに半角英数字のみを許可する方法について解説します。
これにより、ユーザーが不正な文字を入力するのを防ぐことができます。
KeyPressイベントの利用
TextBoxのKeyPressイベントを利用することで、ユーザーが入力した文字をリアルタイムで検証できます。
このイベントは、ユーザーがキーを押したときに発生し、入力された文字を制御することが可能です。
以下は、KeyPressイベントを使用して半角英数字のみを許可するサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
textBox1.KeyPress += new KeyPressEventHandler(TextBox1_KeyPress);
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 入力された文字が半角英数字かどうかを判定
if (!char.IsControl(e.KeyChar) && !char.IsLetterOrDigit(e.KeyChar))
{
// 半角英数字以外の文字は無効
e.Handled = true;
}
}
}
このコードでは、TextBoxに対してKeyPressイベントハンドラを追加し、入力された文字が半角英数字でない場合にe.Handled
をtrue
に設定しています。
これにより、無効な文字の入力を防ぎます。
ASCIIコードによる判定
ASCIIコードを使用して、入力された文字が半角英数字であるかを判定することもできます。
半角英数字のASCIIコードは以下の通りです。
文字 | ASCIIコード |
---|---|
0-9 | 48-57 |
A-Z | 65-90 |
a-z | 97-122 |
この範囲内の文字のみを許可するように、KeyPressイベントで判定を行います。
以下は、ASCIIコードを用いた判定のサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
textBox1.KeyPress += new KeyPressEventHandler(TextBox1_KeyPress);
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// ASCIIコードを用いて半角英数字を判定
if (!char.IsControl(e.KeyChar) &&
!(e.KeyChar >= 48 && e.KeyChar <= 57) && // 0-9
!(e.KeyChar >= 65 && e.KeyChar <= 90) && // A-Z
!(e.KeyChar >= 97 && e.KeyChar <= 122)) // a-z
{
// 半角英数字以外の文字は無効
e.Handled = true;
}
}
}
このコードでは、入力された文字のASCIIコードをチェックし、半角英数字以外の文字が入力された場合にe.Handled
をtrue
に設定しています。
e.Handledプロパティの設定
e.Handled
プロパティは、イベントが処理されたかどうかを示すブール値です。
このプロパティをtrue
に設定することで、入力された文字を無効にすることができます。
KeyPressイベント内でe.Handled
を設定することで、ユーザーが無効な文字を入力した際に、その入力をキャンセルすることができます。
これにより、TextBoxには半角英数字のみが入力されることになります。
このように、KeyPressイベントを利用し、ASCIIコードによる判定を行い、e.Handled
プロパティを設定することで、TextBoxに半角英数字のみを許可することができます。
実装手順
C#のWindowsフォームアプリケーションで、TextBoxに半角英数字のみを許可するための実装手順を解説します。
以下の手順に従って、実装を進めていきましょう。
TextBoxの配置
まず、Visual Studioのデザイナーを使用して、フォームにTextBoxを配置します。
以下の手順で行います。
- 新しいWindowsフォームプロジェクトを作成します。
- ツールボックスからTextBoxを選択し、フォーム上にドラッグ&ドロップします。
- TextBoxのプロパティを設定します。
例えば、Name
プロパティをtextBox1
に設定します。
KeyPressイベントハンドラの追加
次に、TextBoxのKeyPressイベントハンドラを追加します。
これにより、ユーザーが入力した文字をリアルタイムで検証できるようになります。
これにより、イベントハンドラが自動的に生成されます。
コード例の解説
以下に、TextBoxに半角英数字のみを許可するためのコード例を示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
textBox1.KeyPress += new KeyPressEventHandler(TextBox1_KeyPress);
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 入力された文字が半角英数字かどうかを判定
if (!char.IsControl(e.KeyChar) && !char.IsLetterOrDigit(e.KeyChar))
{
// 半角英数字以外の文字は無効
e.Handled = true;
}
}
}
partial class MyForm : Form
:MyFormクラス
がWindowsフォームを継承しています。InitializeComponent();
:フォームの初期化を行います。textBox1.KeyPress += new KeyPressEventHandler(TextBox1_KeyPress);
:TextBoxのKeyPressイベントにハンドラを追加します。private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
:KeyPressイベントが発生した際に呼び出されるメソッドです。if (!char.IsControl(e.KeyChar) && !char.IsLetterOrDigit(e.KeyChar))
:入力された文字が制御文字でもなく、英数字でもない場合の判定を行います。e.Handled = true;
:無効な文字が入力された場合、入力をキャンセルします。
このように、TextBoxの配置からイベントハンドラの追加、コードの解説までを行うことで、半角英数字のみを許可する機能を実装することができます。
応用例
C#のWindowsフォームアプリケーションにおいて、TextBoxに対する入力制限をさらに応用する方法をいくつか紹介します。
これにより、特定の要件に応じた入力制限を実装することができます。
特定の記号を許可する方法
特定の記号を許可する場合、KeyPressイベント内で許可する文字を追加することができます。
例えば、アンダースコア(_)とハイフン(-)を許可する場合のコードは以下の通りです。
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 入力された文字が半角英数字または特定の記号かどうかを判定
if (!char.IsControl(e.KeyChar) &&
!char.IsLetterOrDigit(e.KeyChar) &&
e.KeyChar != '_' && e.KeyChar != '-')
{
// 許可されていない文字は無効
e.Handled = true;
}
}
このコードでは、半角英数字に加えてアンダースコアとハイフンも許可しています。
数字のみを許可する方法
数字のみを許可する場合は、KeyPressイベントで数字の範囲をチェックします。
以下は、数字のみを許可するためのサンプルコードです。
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 入力された文字が数字かどうかを判定
if (!char.IsControl(e.KeyChar) && (e.KeyChar < '0' || e.KeyChar > '9'))
{
// 数字以外の文字は無効
e.Handled = true;
}
}
このコードでは、入力された文字が数字でない場合にe.Handled
をtrue
に設定し、無効な入力を防ぎます。
大文字小文字の自動変換
ユーザーが入力した文字を自動的に大文字または小文字に変換することも可能です。
以下は、入力された文字を自動的に大文字に変換するサンプルコードです。
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 入力された文字を大文字に変換
e.KeyChar = char.ToUpper(e.KeyChar);
}
このコードでは、入力された文字をchar.ToUpperメソッド
を使用して大文字に変換しています。
これにより、ユーザーが小文字を入力しても自動的に大文字に変換されます。
このように、特定の記号を許可したり、数字のみを許可したり、大文字小文字の自動変換を行うことで、TextBoxの入力制限を柔軟にカスタマイズすることができます。
よくある質問
まとめ
この記事では、C#のWindowsフォームアプリケーションにおいてTextBoxに半角英数字のみを許可する方法について詳しく解説しました。
具体的には、KeyPressイベントを利用した入力制限の実装手順や、特定の記号を許可する方法、数字のみを許可する方法、大文字小文字の自動変換などの応用例を紹介しました。
これらの技術を活用することで、ユーザーが意図しない入力を防ぎ、アプリケーションの使いやすさを向上させることが可能です。
ぜひ、実際のプロジェクトにこれらの知識を活かして、より良いユーザー体験を提供してみてください。