Winformテキストボックスに数字のみを入力できるようにする方法
WinFormのテキストボックスに数値のみを入力させるには、次のいずれかの方法を使用できます。
- KeyPressイベントを使用する:
テキストボックスのKeyPressイベントにおいて、押されたキーが数値キーまたは許可されたキー以外の場合は、そのキー入力をキャンセルする。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
- TextChangedイベントと正規表現を使用する:
テキストボックスのTextChangedイベントで正規表現を用いて、テキストボックス内の内容が数値かどうかをチェックし、数値でない場合は数値以外の文字をクリアします。
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = Regex.Replace(textBox1.Text, "[^0-9]", "");
}
- マスク入力を使用
通常のTextBoxコントロールの代わりにMaskedTextBoxコントロールを使用し、マスクを数字の形式(例:0-9)に設定します。
maskedTextBox1.Mask = "0-9999";
いずれの方法でも、テキストボックスに入力できるのは数字だけになります。