C#でWindowsフォームアプリケーションを開発する際、ユーザーの入力を制限したい場面がよくあります。特に、特定の文字の入力を禁止することで、データの整合性を保ったり、セキュリティリスクを軽減したりすることができます。この記事では、C#を使ってテキストボックスに禁止文字を設定する方法を、初心者にも分かりやすく解説します。
目次
KeyPressイベントを使用する方法
テキストボックスに禁止文字を設定する最も一般的な方法は、KeyPressイベントを使用することです。このイベントは、ユーザーがキーを押すたびに発生し、入力される文字を制御することができます。
以下に、特定の文字(この例では「@」と「#」)を禁止する基本的なコード例を示します:
using System;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.KeyPress += TextBox1_KeyPress;
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 禁止文字のリスト
char[] forbiddenChars = { '@', '#' };
// 入力された文字が禁止文字リストに含まれている場合、入力をキャンセル
if (Array.IndexOf(forbiddenChars, e.KeyChar) >= 0)
{
e.Handled = true;
MessageBox.Show("@ と # は使用できません。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
このコードの主なポイントは以下の通りです:
textBox1.KeyPress += TextBox1_KeyPress;
で、テキストボックスのKeyPressイベントにイベントハンドラを追加します。forbiddenChars
配列に禁止したい文字を定義します。Array.IndexOf
メソッドを使用して、入力された文字が禁止文字リストに含まれているかチェックします。- 禁止文字が入力された場合、
e.Handled = true;
で入力をキャンセルし、警告メッセージを表示します。
TextChangedイベントを使用する方法
KeyPressイベントの代わりに、TextChangedイベントを使用することもできます。この方法は、コピー&ペーストなどの操作にも対応できる利点があります。
using System;
using System.Windows.Forms;
using System.Linq;
public partial class Form1 : Form
{
private readonly char[] forbiddenChars = { '@', '#' };
public Form1()
{
InitializeComponent();
textBox1.TextChanged += TextBox1_TextChanged;
}
private void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
int cursorPosition = textBox.SelectionStart;
// 禁止文字を削除
string cleanedText = new string(textBox.Text.Where(c => !forbiddenChars.Contains(c)).ToArray());
if (textBox.Text != cleanedText)
{
textBox.Text = cleanedText;
textBox.SelectionStart = cursorPosition - 1;
MessageBox.Show("@ と # は使用できません。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
この方法では、テキストが変更されるたびに禁止文字をチェックし、削除します。
まとめ
C#でテキストボックスに禁止文字を設定する主な方法は以下の2つです:
- KeyPressイベントを使用する方法
- TextChangedイベントを使用する方法
KeyPressイベントは入力時のリアルタイム制御に適しており、TextChangedイベントはより広範囲の入力操作に対応できます。アプリケーションの要件に応じて、適切な方法を選択してください。
これらの技術を使用することで、ユーザーの入力エラーを防ぎ、データの整合性を保つことができます。ユーザー名の入力フィールド、パスワード設定フォーム、特定のフォーマットを要求する入力欄など、様々な場面で活用できるでしょう。
コメント