C# 如何解析格式不正确的输入字符串
我的代码:C# 如何解析格式不正确的输入字符串,c#,.net,C#,.net,我的代码: private void txtSubTotal_TextChanged(object sender, EventArgs e) { double subTotal = 0; subTotal = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtQuantity.Text); txtSubTotal.Text = "" + subTotal; } 错误向代码的这一部分指出了什么可能是错误的 我
private void txtSubTotal_TextChanged(object sender, EventArgs e)
{
double subTotal = 0;
subTotal = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtQuantity.Text);
txtSubTotal.Text = "" + subTotal;
}
错误向代码的这一部分指出了什么可能是错误的
我的错误指向代码的这一部分,可能是什么问题?如果在
txtPrice
或txtQuantity
中键入的文本不是数字转换。ToDouble
将失败。因此,您可以尝试以下方法:
double subTotal = 0;
double price, quantity;
if (double.TryParse(txtPrice.Text, out price) &&
double.TryParse(txtQuantity.Text, out quantity))
{
subTotal = price * quantity;
}
else
{
//Notify the exception
}
您可以使用
MaskedTextBox
控件确保用户可以在文本框中输入有效数据,您可以使用以下代码来代替:
double price;
double qty;
if (Double.TryParse(txtPrice.Text, out price)&&
Double.TryParse(txtQuantity.Text, out qty)) // if done, both are valid numbers
{
double subTotal = 0;
subTotal = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtQuantity.Text);
txtSubTotal.Text = "" + subTotal.ToString();
}
else{
MessageBox.Show("Invalid Input");
}
如果对输入不确定,则应使用double.TryParse()方法。如果用户没有传递期望值,那么它将抛出一个错误 Convert.ToDouble()方法 但是如果我们确定您将传递唯一的数字,那么您可以使用Convert.ToDouble() 试试这个
double price, quantity;
if(string.NullOrEmpty(txtPrice.Text)&&string.NullOrEmpty(txtQuantity.Text)
{
if (Double.TryParse(txtPrice.Text, out price)&&
Double.TryParse(txtQuantity.Text, out quantity))
{
double subTotal = 0;
subTotal = price * quantity;
txtSubTotal.Text = "" + subTotal.ToString();
}
}
txtPrice.Text字符串或/和txtQuantity.Text不是可以转换为double的有效字符串。可能是因为这两个文本框中的值来自ms access数据库??发生的情况是输入字符串的格式不正确。您的问题是输入字符串的格式不正确。可能存在重复的
Convert.ToDouble will throw an exception on non-numbers
Double.Parse will throw an exception on non-numbers or null
Double.TryParse will return false or 0 on any of the above without generating an exception.
double price, quantity;
if(string.NullOrEmpty(txtPrice.Text)&&string.NullOrEmpty(txtQuantity.Text)
{
if (Double.TryParse(txtPrice.Text, out price)&&
Double.TryParse(txtQuantity.Text, out quantity))
{
double subTotal = 0;
subTotal = price * quantity;
txtSubTotal.Text = "" + subTotal.ToString();
}
}