2015-11-02 88 views
-4

未設置值時,單擊清除表單按鈕不會導致異常,但在清除前插入數字值時會返回異常。其他帶有字符串變量的文本框工作正常。清除已填充的數字文本框時輸入異常

private void txtIngred4Sugar_TextChanged(object sender, EventArgs e) 
    { 
     float ing4S = (float)Convert.ToDouble(txtIngred4Sugar.Text); 
    } 

    void ClearAllText(Control con) 
    { 
     foreach (Control c in con.Controls) 
     { 
      if (c is TextBox) 
       ((TextBox)c).Clear(); 
      else 
       ClearAllText(c); 
     } 
    } 

    private void clearForm1_Click(object sender, EventArgs e) 
    { 
     ClearAllText(this); 

    } 

例外: 類型「System.FormatException」的未處理的異常出現在mscorlib.dll

其他信息:輸入字符串的不正確的格式。

+2

什麼是異常消息? – Partha

+5

這是一個令人難以置信的特定錯誤消息。 'txtIngred4Sugar.Text'中的值不能轉換爲double。檢查拋出異常時的值。 –

+0

所以清除盒子使其爲0.而0是不正確的輸入我猜測。我最後試圖能夠接受像'20'這樣的整數,並且能夠將一些小數值(如20.5)用作良好的用戶輸入。 – DV8DUG

回答

1

如果沒有更多的細節,我會說,你的問題是此行

float ing4S = (float)Convert.ToDouble(txtIngred4Sugar.Text);

當你清除文本框,在txtIngred4Sugar_TextChanged事件處理程序進場,但是你不檢查,看是否txtIngred4Sugar.Text在嘗試轉換它之前是一個數字。

Convert.ToDouble如果參數不是數字,將會引發異常。

您應該在該語句周圍放置一個Try..Catch,並處理該異常,或者使用Double.TryParse方法。有關TryParse的更多信息,請參閱此MSDN鏈接https://msdn.microsoft.com/en-us/library/994c0zb1%28v=vs.110%29.aspx