您好我有一个Windows Phone 8应用程序我有异常
mscorlib.ni.dll中发生了'System.FormatException'类型的异常,但未在用户代码中处理
以下是代码
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");
}
}
应用程序运行,如果我没有在文本框中输入值,则返回msg框,但之后应用程序停止并返回上面的exption?有什么问题?
答案 0 :(得分: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);
答案 1 :(得分:0)
您忘记在显示消息框后停止执行您的方法:
if (puttext.Text.Length == 0 || basetext.Text.Length==0 )
{
MessageBox.Show(" Enter Values for Base Stolen and Putouts ");
return;
}
此外,将字符串转换为double时,请务必指定文化。您的Windows Phone应用程序将由世界各地的用户执行,并且某些国家/地区使用不同的小数分隔符。例如:
basestolen = Convert.ToDouble(basetext.Text, CultureInfo.InvariantCulture);