3

このおそらく簡単な作業は私に頭痛の種を与えました。float.TryParseTextboxishコントロールに成功するテキストをユーザーが入力できるようにしたいだけです。

通常のTextBoxを使用して、btnOK_Clickでテキストをチェックすることもできますが、これは明らかに不十分です。また、優れた組み込みのMaskedTextBoxコントロールがありますが、マスクをに等しく設定できませんでしたfloat.TryParse。また、フォーカスの変更が発生した場合にのみ有効性をチェックしているようです。

ネットを掘り下げてみると面白いアイデアが浮かびましたが、どれも私が望むほど素晴らしいものではありませんでした。

この問題をどのように解決しましたか?明らかな解決策を見逃しただけですか、それともこの機能を自分で実装する必要がありますか?

SOに関するいくつかの同様のスレッドを知っていますが、実行可能な解決策は見つかりませんでした。

更新:はい、WinFormsです。

4

2 に答える 2

6

編集

それはとても簡単になります...Validatingイベントハンドラーをテキストボックスに追加TryParseし、コードビハインドで実行するだけです。無効な場合は、ユーザーにそのように促します。

ユーザーが入力を終了し、TextBox からフォーカスを移動すると検証が開始されるため、オンザフライ チェックを行う必要がある場合は、代わりに TextChanged または KeyPress/KeyUp イベント ハンドラを処理できます。

オリジナル

これはasp.netまたはwinforms/wpfにありますか

そのasp.netの場合、RegularExpressionValidator(コンマ区切り、小数点1つなどを考慮して)とa の組み合わせを使用しRangeValidatorて、フロートの最小/最大値を設定できます。

それとは別に、それを保証する唯一の方法は、テキストボックスを updatepanel でラップし、それに CustomServerValidator を貼り付け、サーバーの検証機能で値に対してaTryParseを実行することです。TextBox.Text有効ではありません

于 2009-05-06T08:20:06.873 に答える
4

Validatingfalse の使用と検証には注意してください。有効なデータを入力しないと、テキスト ボックスからフォーカスを移動できないことに気付くかもしれません。これは、ユーザビリティにとって非常に大きな問題です。

これを解決するには、TryParse()onLostFocusを試すだけです。TryParse が失敗した場合は、テキスト ボックスの背景を赤みがかった色合いにして、何かがおかしいことを明らかにします。

于 2009-05-06T08:51:49.777 に答える