Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解析格式不正确的输入字符串_C#_.net - Fatal编程技术网

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();
    }

 }