これはおそらく簡単な作業で頭がおかしくなりました。私は単に、ユーザがfloat.TryParse
の後に続くテキストをTextboxishコントロールに入力させたいだけです。C#テキストボックスの入力検証:float
私は通常のTextBoxを使用し、いくつかのbtnOK_ClickでTextをチェックすることができますが、これは明らかに不十分です。また、素晴らしい組み込みのMaskedTextBoxコントロールがありますが、マスクをfloat.TryParse
と等しく設定していません。また、フォーカス変更が発生した場合にのみ、有効性をチェックするように見えます。
ネットで掘り下げてみると、興味深いアイデアがいくつか出てきましたが、どれも好きではありません。
この問題をどのように解決しましたか?わかりやすい解決策が見つからないか、この機能を自分で実装する必要がありますか?
私はSOのいくつかの類似スレッドを認識していますが、実現可能な解決策は見つかりませんでした。
更新:はい、WinForms。それはたくさん簡単に...ちょうどあなたのテキストボックス にValidating
イベントハンドラを追加し、背後にあるコードでTryParse
を行います
私の最終的な解決策では、最後の有効な値をキャッシュしており、必要に応じて、フォーカスが失われた場合にテキストをリセットします。 – mafu
色を変えるあなたの考えは素晴らしかったです。私の解決策では、無効な値を直ちに塗りつぶすことで、値を変更する必要があることがユーザーに分かります。 – mafu
私はTryParse()をTextChangedに置き、TryParseが失敗したときにテキストボックスの背景色を赤に設定し、TryParseが成功すると背景色をColor.Emptyにリセットしました。これにより、ユーザーの入力時に即座にフィードバックが得られます。 – CleanCoder