如何在 C# 中减去一个负数?

How to subtract a negative number in C#?

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

例如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 中输入一个负值,输入“-”将触发计算,因为两个文本框都包含一个字符串。问题是您在没有任何错误检查的情况下转换为整数,因此它试图将“-”转换为导致您失败的整数。

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_p7_TextChanged()

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

Convert.ToInt32(txt_p7.Text) 将抛出错误,因为此时 txt_p7.Text = "-" 不是数字。

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