我有幾個文本框應該允許某種格式,但是當用戶在文本框中以錯誤的格式輸入它時,我想要捕獲控件名稱並清除文本框的文本。如何捕捉在C#中導致異常的控件名稱?
回答
清除用戶輸入,因爲它不是給定的格式是非常用戶不友好的。如果只有十個字符中的一個出錯了呢?他們必須重新輸入。只需使用MaskedTextBox和Mask
作爲您期望的模式。
當使用MaskedTextBox
,您可以訂閱MaskInputRejected
事件描述here:
public void Form1_Load(Object sender, EventArgs e)
{
... // Other initialization code
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected)
}
void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "Invalid Input";
toolTip1.Show("We're sorry, but only digits (0-9) are allowed in dates.", maskedTextBox1, maskedTextBox1.Location, 5000);
}
我真的很喜歡,但我有一個文本框中的三種格式(十進制,二進制和十六進制)。 – Vikyboss
這些是我正在尋找的最大可用值: 二進制=> 11111111 十六進制=> ff 十進制=> 255 它是否可以在掩碼文本框中使用,特別是當我嘗試時設置小數最大值似乎更難。 – Vikyboss
解析'KeyPress'事件中的輸入並嘗試解析輸入。如果不正確,你可以將'e.Handled'設置爲true,所以它不會被輸入到文本框中。 – CodeCaster
調試只
你可以從yourForm.cs調試模式得到控制的名字。我不認爲這個代碼會在相關cuz上運行。源文件不會在其他版本的權利?
using System.Diagnostics;
public void ParseControlText()
{
try
{
var doubleval = Double.Parse(tb_double.Text);
var intval = Int32.Parse(tb_int.Text);
//... bunch of controls need to be parssed to calculate something
}
catch (FormatException ex)
{
var stlast = new StackTrace(ex,true).GetFrames().Last();
//this requires form.cs to exist . how am i gonna do this in release? idk
var stLine = File.ReadLines(stlast.GetFileName())
.ToList()[stlast.GetFileLineNumber()-1];
var m = Regex.Match(stLine ,@"\((.*?)\..*?\)");
var ctrlname = m.Groups[1].Value;
MessageBox.Show(ctrlname + " control's text coundnt be Parsed! ");
}
}
- 1. webview捕捉導致內存異常
- 2. 如何捕捉C#中的Lua異常#
- 3. 如何捕捉C#中的FtpWebResponse異常
- 4. 捕捉異常C#
- 5. C#捕捉異常
- 6. 在C#中捕捉本機C++異常
- 7. 如何捕捉laravel控制器異常
- 8. 如何捕捉異常[C++/CX]
- 9. 捕捉OutOfMemory異常C#
- 10. C++不捕捉lua異常
- 11. 捕捉多個異常-C#
- 12. 如何捕捉devenv異常
- 13. 如何捕捉「FileNotFoundException」異常?
- 14. 在C#中捕捉Ironpython異常#
- 15. 如何在iOS中捕捉iCloud異常?
- 16. 如何在Java中捕捉異常?
- 17. 如何在`Yesod Handler'中捕捉異常?
- 18. 如何在Qt中捕捉異常?
- 19. 如何捕捉並處理C#中的WebView組件的異常?
- 20. 事件導致錯誤,但我無法捕捉到異常
- 21. 如何捕捉「未捕獲的異常」?
- 22. 捕捉異常
- 23. 如何捕捉eventmachine中的異常
- 24. 如何捕捉WeldListener中的isHexDigit異常?
- 25. 如何捕捉線程中的異常
- 26. 如何在java中捕捉異常拋出的異常?
- 27. Java中的捕捉異常
- 28. 如何捕捉託管C++中的非託管C++異常
- 29. 如何從圖像中捕捉異常
- 30. 如何捕捉SQL異常在Laravel 5
你能告訴我們你是如何檢查格式,什麼是產生異常? –
窗體?我認爲你不需要捕捉任何東西,你不會喜歡拋出你所描述的任何異常稱爲輸入驗證。 –
我有幾個文本框,並且我有一個面板有三個單選按鈕(十進制,二進制和十六進制)。我只需要在每個文本框中只輸入一個字節,如果用戶輸入的字節數多於二進制「111100001」中的字節數,我就會得到格式異常。所以,爲了使一切變得簡單,我想在發生這種情況時清除控件的文本。 – Vikyboss