清空列表框的文本框时,自动计算文本框的值为零

时间:2018-06-09 20:30:13

标签: c#

我正在使用此计算功能

  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

感谢您的时间和帮助。

1 个答案:

答案 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);
    }
}