2013-05-27 177 views
4

你好,我有一個Windows 8的手機應用我有例外異常;類型「System.FormatException」的異常出現在mscorlib.ni.dll但在用戶代碼中沒有處理

類型的異常「System.FormatException 「發生在mscorlib.ni.dll但在用戶代碼中沒有處理

這裏是代碼

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     double basestolen; 
     double attempedstales; 
     double avarege; 
     double putout; 




     if (puttext.Text.Length == 0 | basetext.Text.Length==0) 
     { 

      MessageBox.Show(" Enter Values for Base Stolen and Putouts "); 

     } 

     basestolen = Convert.ToDouble(basetext.Text); 
     putout = Convert.ToDouble(puttext.Text); 



     attempedstales = basestolen + putout; 


     if (attempedstales != 0 ) 
     { 

      avarege = (((basestolen/attempedstales)/100)); 
      avarege = avarege * 10000; 
      avgtext.Text = Convert.ToString(avarege); 


     } 
     else 
     { 
      MessageBox.Show("Attemped Stales Value should not be Zero"); 
     } 



    } 

的應用程序運行,並且如果我沒有在文本框中輸入一個值,它的回報味精盒子,但之後,應用程序停止並返回上面的exption?問題是什麼?

回答

0

你忘顯示消息框後,停止你的方法的執行:

if (puttext.Text.Length == 0 || basetext.Text.Length==0) 
{ 
    MessageBox.Show(" Enter Values for Base Stolen and Putouts "); 
    return; 
} 

此外,將字符串轉換爲雙時,請務必指定文化。您的Windows Phone應用程序將由世界各地的用戶執行,並且一些國家使用不同的小數點分隔符。例如:

basestolen = Convert.ToDouble(basetext.Text, CultureInfo.InvariantCulture); 
3

的錯誤是最有可能在這裏:

basestolen = Convert.ToDouble(basetext.Text); 
putout = Convert.ToDouble(puttext.Text); 

它拋出一個出現FormatException如果數字不是一個有效的格式。 (see more here)。嘗試使用double.TryParse以安全的方式解析您的值。

double result;  
bool success = double.TryParse(basetext.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out result); 
相關問題