整数値のみを受け入れるテキスト ボックス コントロールを備えた Windows フォーム アプリがあります。 以前は、KeyPress イベントをオーバーロードし、仕様に適合しない文字を削除することで、この種の検証を実行していました。 MaskedTextBox コントロールを検討しましたが、正規表現で機能したり、他のコントロールの値に依存したりする、より一般的なソリューションが欲しいです。
理想的には、数字以外の文字を押しても結果が生成されないか、無効な文字に関するフィードバックがすぐにユーザーに提供されるように動作します。
ベストアンサー1
2 つのオプション:
使う
NumericUpDown
代わりに、NumericUpDown がフィルタリングを実行します。これは便利です。もちろん、これにより、ユーザーはキーボードの上下矢印を押して現在の値を増減することもできます。適切なキーボード イベントを処理して、数値以外の入力を防止します。標準の 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