数字のみを受け入れるテキストボックスを作成するにはどうすればいいですか? 質問する

数字のみを受け入れるテキストボックスを作成するにはどうすればいいですか? 質問する

整数値のみを受け入れるテキスト ボックス コントロールを備えた Windows フォーム アプリがあります。 以前は、KeyPress イベントをオーバーロードし、仕様に適合しない文字を削除することで、この種の検証を実行していました。 MaskedTextBox コントロールを検討しましたが、正規表現で機能したり、他のコントロールの値に依存したりする、より一般的なソリューションが欲しいです。

理想的には、数字以外の文字を押しても結果が生成されないか、無効な文字に関するフィードバックがすぐにユーザーに提供されるように動作します。

ベストアンサー1

2 つのオプション:

  1. 使うNumericUpDown代わりに、NumericUpDown がフィルタリングを実行します。これは便利です。もちろん、これにより、ユーザーはキーボードの上下矢印を押して現在の値を増減することもできます。

  2. 適切なキーボード イベントを処理して、数値以外の入力を防止します。標準の TextBox で次の 2 つのイベント ハンドラーを使用することで成功しました。

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
            (e.KeyChar != '.'))
        {
                e.Handled = true;
        }
    
        // only allow one decimal point
        if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
        {
            e.Handled = true;
        }
    }
    

TextBox で小数点以下の桁を許可しない場合は、 のチェック'.'(およびそれに続く複数の のチェック) を削除できます。TextBoxで負の値を許可する場合は、'.'のチェックを追加することもできます。'-'

桁数でユーザーを制限する場合は、次を使用します。textBox1.MaxLength = 2; // this will allow the user to enter only 2 digits

おすすめ記事