如何在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中输入一个负数,您将遇到相同的错误。