输入字符串格式不正确

问题描述:

private void btnComprobar_Click(object sender, RoutedEventArgs e) 
{ 
    Inventario inv = new Inventario(); 

    inv.beneficio = txtBeneficio.Text; 
    inv.idProducto = txtIdProducto.Text; 
    inv.idProveedor = txtIdProveedor.Text; 
    inv.precioEntrada = txtprecioEntrada.Text; 

    //errores en la conversion de precioSalida y cantidad 
    inv.precioSalida = double.Parse(txtPrecioSalida.Text); 

    inv.cantidad = int.Parse(txtCantidad.Text); 

    inv.clase = txtClase.Text; 
    switch (txtClase.Text) 
    { 
     case "1": 
      inv.clase = "FUTBOL"; 
      break; 
     case "2": 
      inv.clase = "RUNING"; 
      break; 
     case "3": 
      inv.clase = "BALONMANO"; 
      break; 
     default: 
      inv.clase = "1"; 

      break; 

    } 
    inv.descripcion = txtDescripcion.Text; 
    inv.estado = txtEstado.Text; 

    databaseConector.instance.comprobarProducto(dtGConsultas, inv); 
} 

错误消息: 输入字符串格式不正确。输入字符串格式不正确

在这两种情况下

Inv.precioSalida = double.Parse (txtPrecioSalida.Text); 
+1

显然在txtPrecioSalida TextBox中的字符串不能转换为双。 TextBox中的值是什么? – mm8

+0

我有几个文本框,作为过滤器错误时的值为空 – AlexisRS

+0

你是说txtPrecioSalida.Text为空?您无法将null传递给double.Parse方法而不会发生异常。 – mm8

double.Parse呼叫将抛出一个异常,如果string参数不能被解析到一个double值。与int.Parse一样。

你可以使用double.TryParse/int.TryParse方法尝试解析值:

private void btnComprobar_Click(object sender, RoutedEventArgs e) 
{ 
    Inventario inv = new Inventario(); 

    inv.beneficio = txtBeneficio.Text; 
    inv.idProducto = txtIdProducto.Text; 
    inv.idProveedor = txtIdProveedor.Text; 
    inv.precioEntrada = txtprecioEntrada.Text; 

    //errores en la conversion de precioSalida y cantidad 
    double precioSalida; 
    if(double.TryParse(txtPrecioSalida.Text, out precioSalida)) 
     inv.precioSalida = precioSalida 

    int cantidad; 
    if(int.TryParse(txtCantidad.Text, out cantidad)) 
     inv.cantidad = cantidad; 

    inv.clase = txtClase.Text; 
    switch (txtClase.Text) 
    { 
     case "1": 
      inv.clase = "FUTBOL"; 
      break; 
     case "2": 
      inv.clase = "RUNING"; 
      break; 
     case "3": 
      inv.clase = "BALONMANO"; 
      break; 
     default: 
      inv.clase = "1"; 

      break; 

    } 
    inv.descripcion = txtDescripcion.Text; 
    inv.estado = txtEstado.Text; 

    databaseConector.instance.comprobarProducto(dtGConsultas, inv); 
} 
+0

如果它已经非常有用,我仍然需要的东西,因为没有错误,但作为过滤器的一部分搜索完成null值并没有找到任何结果,但非常感谢。 – AlexisRS