当我从datagridview获取数据到下面的文本框中,并且在其上应用了该函数时,我通常得到不正确的结果。我正在应用sum函数,它在result.text中提供的答案是不正确的。 有人可以在下面的代码中指出问题吗?
public void addqty()
{
int a, b;
bool isAValid = int.TryParse(val1.Text, out a);
bool isBValid = int.TryParse(val2.Text, out b);
result.Text = (a + b).ToString();
}
答案 0 :(得分:3)
如果val1或val2未通过Parse,则a或b将等于0.您需要确保它们是有效数字,如果不是,则需要相应处理。
int a, b;
if (int.TryParse(val1.Text, out a) && int.TryParse(val2.Text, out b))
{
result.Text = (a + b).ToString();
}
else
{
//handle bad values
}
答案 1 :(得分:1)
如果A或B无效,您似乎没有考虑如何做。现在,如果A有效而B不是,它仍将返回A.对于B,情况也是如此。如果这不是您想要的功能,您可能需要应用不同的代码:
if (isAValid && isBValid) {result.Text = (a + b).ToString();}
答案 2 :(得分:1)
您未检查isAValid
和isBValid
的结果,因此,如果其中任何一个未解析,则a
和/或b
的值将为{ {1}}。你仍会看到结果,但可能是错误的。
答案 3 :(得分:1)
我已为此功能添加了简单验证。您应该始终包括空检查,解析检查等...我怀疑文本框1或2正在发送一些无效数据。
public void addqty()
{
int a, b;
if (!int.TryParse(val1.Text, out a) || int.TryParse(val2.Text, out b))
result.Text = "Can't convert variable a or variable b";
else
result.Text = (a + b).ToString();
}
textBox1.Text = string.IsNullOrEmpty(row.Cells["Serial #"].Value.ToString()) ? "0" : row.Cells["Serial #"].Value.ToString();
textBox2.Text = string.IsNullOrEmpty(row.Cells["Barcode"].Value.ToString()) ? "0" : row.Cells["Barcode"].Value.ToString();
textBox3.Text = string.IsNullOrEmpty(row.Cells["Quantity"].Value.ToString()) ? "0" : row.Cells["Quantity"].Value.ToString();