如何在C#中减去负数?

如何在C#中减去负数?,c#,parsing,numbers,C#,Parsing,Numbers,如果我从一个正数中减去一个正数,代码就会工作 例如,4-1=3。 问题是当我减去一个负数时,比如3--2 这应该等于5 当我在文本框txt_p7(第二个文本框)中输入“-”时, 它显示了以下代码处的错误: txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString(); 以下是我正在使用的代码: private void txt_p1_TextChanged(object se

如果我从一个正数中减去一个正数,代码就会工作

例如,
4-1=3
。 问题是当我减去一个负数时,比如
3--2

这应该等于
5

当我在文本框txt_p7(第二个文本框)中输入“-”时, 它显示了以下代码处的错误:

txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString();
以下是我正在使用的代码:

private void txt_p1_TextChanged(object sender, EventArgs e)
{  if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text)))

txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString();

    }

private void txt_p7_TextChanged(object sender, EventArgs e)
    {
        if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text)))


            txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString();
    }

如果没有错误消息,很难判断发生了什么,但从我所看到的情况来看,您在完成数字之前触发了一个计算

如果在txt_p1中输入一个值,并尝试在txt_p7中输入一个负值,则输入“-”将触发计算,因为两个文本框都包含字符串,因此满足If条件。问题是您正在转换为整数而没有进行任何错误检查,因此它试图将“-”转换为整数,这导致了您的失败

private void txt_p1_TextChanged(object sender, EventArgs e)
    {
        if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text)))
        {
            int val1, val2;
            //Ensure both are valid integers
            if (int.TryParse(txt_p1.Text, out val1) && int.TryParse(txt_p7.Text, out val2))
            {
                txt_result.Text = (val1 - val2).ToString();
            }
        }
    }

您需要在转换之前验证输入,否则会输入非数字字符,这将导致运行时失败。

您的逻辑位于
txt\u p7\u TextChanged()

因此,当您尝试输入“-”时,在输入任何数字之前,将调用此方法

Convert.ToInt32(txt\u p7.Text)
将抛出一个错误,因为此时
txt\u p7.Text=“-”
不是一个数字

txt\u p7\u TextChanged()
的开头放一个断点,您将看到哪里出了问题

试试这个

    private void txt_p7_TextChanged(object sender, EventArgs e)
    {
        int number1, number2;
        if (int.TryParse(txt_p1.Text, out number1) && int.TryParse(txt_p7.Text, out number2))
            txt_result.Text = (number1 - number2).ToString();
    }

错误消息是什么??更正错误的第一步是读取错误消息。FormatException未处理。。第一次输入值时,no1=-3,no2=4,结果显示=-7。。好的,在那之后,我改变数值no1或no2,有错误..先生。。我说得很清楚。。我想用txt_p7减去txt_p1。。(txt_p1-txt_p7)。。。现在错误出现在txt_p7。。当我在txt_p7处插入负值时,它有错误。。但是如果txt_p7是正值,它就起作用了。。非常奇怪,因为txt_p1可以输入负值。在p1中可以,因为目前没有输入到p7中。这意味着两个文本框都没有填充,因此您的空检查显示“p7为空,请勿尝试转换”。如果您先在p7中输入一个数字,然后在p1中输入一个负数,您将遇到相同的错误。