[C#]TextBoxに数字のみ入力可能にする

以下のコードは、TextBoxに対して数字のみを入力可能とするコードです。
数字以外を入力した場合は無視されます。

private void textBox1_KeyPress( object sender, KeyPressEventArgs e ) {
    // 制御文字は入力可
    if ( char.IsControl(e.KeyChar) ) {
        e.Handled = false;
        return;
    }
 
    // 数字(0-9)は入力可
    if ( char.IsDigit(e.KeyChar)  ) {
        e.Handled = false;
        return;
    }
 
    // 小数点は1つだけ入力可
    if ( e.KeyChar == '.') {
        TextBox target = sender as TextBox;
        if ( target.Text.IndexOf('.') < 0 ) {
            // 複数のピリオド入力はNG
            e.Handled = false;
            return;
        }
    }
 
    // 上記以外は入力不可
    e.Handled = true;
}



3つめのifで、小数点の入力を許容しています。
もし、小数をNGとみなしたい場合は、3つめのif文自体を削除すればよいです。

また、数字(digit)ではなく数値(number)の入力を行わせたい場合は、NumericUpDownコントロールが便利です。こちらは、上記のような入力制限に加えて、上限値・下限値を指定する事も可能です。





また、本題からは少し外れますが、数字(digit)と数値(number)の違いについて説明します。

数字というのは、数を表す文字で、例えば社員番号、会員No、伝票番号なども数字に含まれます。
これに対して数値は、金額や数量などの、数学的な意味での”数”を意味します。

関連記事

コメントを残す

メールアドレスが公開されることはありません。