4

当我从 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();
        }
4

4 回答 4

3

如果 val1 或 val2 解析失败,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
}
于 2013-09-10T13:43:50.030 回答
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();
于 2013-09-09T13:48:51.577 回答
1

如果 A 或 B 无效,您似乎没有考虑该怎么做。现在,如果 A 有效而 B 无效,它仍然会返回 A。B 也是如此。如果这不是您想要的功能,您可能需要应用不同的代码:

if (isAValid && isBValid) {result.Text = (a + b).ToString();}
于 2013-09-09T13:46:20.770 回答
1

您没有检查 and 的结果isAValidisBValid因此如果其中任何一个未解析,则aand/or的值b将是0。您仍然会看到结果,但它很可能是错误的。

于 2013-09-09T13:47:03.680 回答