如果我从正数中减去正数,则代码可以正常工作。
例如,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();
}
答案 0 :(得分:2)
您的逻辑位于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();
}
答案 1 :(得分:1)
如果没有错误消息,很难说出发生了什么,但从我可以看到你在数字完成之前触发计算。
如果在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();
}
}
}
您需要在转换之前验证输入,否则可以输入非数字字符,这将导致运行时失败。