我正在使用此计算功能
private void Calculate()
{
double.TryParse(textBox1.Text, out num);
for (int a = 1; a <= 10; a++)
{
listBox1.Items.Add(a + " * " + num + "\n = " + a * num);
}
}
将Calculate()放在private void textBox1_TextChanged中,以便自动计算
我也在使用:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
listBox1.Items.Clear();
}
}
这可以工作,但如果我退格textBox1中的值,那么当该框为空时,仍然会在列表框内显示的计算中使用零显示计算函数,就好像空文本框为零,如果它是空的,除非我退格它会消失。我想知道为什么会这样,以及背后的逻辑是什么。所以要明确
当我输入12时,计算函数显示12,如果i退格,它将为1,它将显示计算函数为1,但如果我再次退格使其为空,它将在列表框内显示计算函数为0 。Here is the screenshot
感谢您的时间和帮助。
答案 0 :(得分:2)
您不会在运行计算代码的文本框中获取TryParse的结果以及您拥有(或没有)的任何内容。检查TryParse的返回是否为false并退出代码
如果TryParse无法解析输入字符串(如果是空字符串),则将out变量设置为其默认值(对于double为零),因此您的代码将针对零乘数运行。
如果用户键入非数字值(如字母),也会发生这种情况。
private void Calculate()
{
if(!double.TryParse(textBox1.Text, out num))
return;
for (int a = 1; a <= 10; a++)
{
listBox1.Items.Add(a + " * " + num + "\n = " + a * num);
}
}