簡體   English   中英

C#輸入文本框的驗證:float

[英]C# Input validation for a Textbox: float

這個簡單的任務給我帶來了一些麻煩。 我只想讓用戶輸入任何成功的float.TryParse文本到Textboxish控件中。

我可以使用普通的TextBox並檢查一些btnOK_Click中的Text,但這顯然很蹩腳。 此外,有一個很好的內置MaskedTextBox控件,但我沒有設置它的掩碼等於float.TryParse 此外,它似乎僅在發生焦點變化時檢查有效性。

在網上挖掘帶來了一些有趣的想法,但沒有一個像我想的那樣好。

你是怎么解決這個問題的? 我是否只是錯過了一個明顯的解決方案,還是我必須自己實現這個功能?

我知道SO上有一些類似的線程,但沒有找到可行的解決方案。

更新:是的,WinForms。

編輯

好吧,這讓它變得更容易......只需在您的文本框中添加一個Validating事件處理程序,並在后面的代碼中執行TryParse 如果它無效,則提示用戶。

當用戶完成輸入並從TextBox移動焦點時,將激活驗證,因此如果您需要進行快速檢查,則可以處理TextChanged或KeyPress / KeyUp事件處理程序。

原版的

這是在asp.net或winforms / wpf

如果是asp.net,你可以使用RegularExpressionValidator (用於說明逗號分隔,1小數點等等)和RangeValidator來設置浮點數的最小值/最大值。

除此之外,保證它的唯一方法是將文本框包裝在updatepanel中,在其上粘貼CustomServerValidator,並在服務器驗證函數中,對TextBox.Text值執行TryParse ,如果成功,則為有效,如果失敗,則無效

使用Validating和驗證為false時要小心。 您可能會發現,除非您輸入有效數據,否則您無法將焦點從文本框移開,這是一個非常大的可用性痛苦。

我通過在LostFocus上嘗試TryParse()來解決這個問題,如果TryParse失敗,我會將文本框背景的顏色設置為偏紅色,以明顯出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM