为什么Tryparse不能正常工作并立即将捕获物扔掉?

时间:2018-10-06 23:49:04

标签: c# tryparse

结果将不会进入我的“结果”文本框,并且当我在数字1中输入任何内容时,它立即提示我“数字2无效”捕获。我很新,不明白为什么它不起作用。

namespace ShippingCalculator_BradleyH
{
    public partial class Form1: Form
    {
        double total;

        public Form1()
        {
            InitializeComponent();
        }

        private void Calculate_Click(object sender, EventArgs e)
        {
        }

        private void Number1_TextChanged(object sender, EventArgs e)
        {
            //assigning variables
            double num1;
            double num2;
            double result;

            //making sure numbers 1 and 2 are numbers.
            if (double.TryParse(Number1.Text, out num1))
            {
                if (double.TryParse(Number2.Text, out num2))
                {
                    result = num1 * num2;
                    Result.Text = result.ToString();
                }
                else
                {
                    MessageBox.Show("Number 2 is invalid.");
                }
            }
            else
            {
                MessageBox.Show("Number 1 is invalid.");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我假设两个文本框最初都是空的。在Number1中输入内容后,此代码将运行,并且Number2将为空。空字符串是无效的double,因此TryParse将返回false

这是我的建议:

  • 首先,将此逻辑提取到一个单独的函数中。称为UpdateResult或类似名称。
  • Number1_TextChangedNumber2_TextChanged都调用此函数
  • UpdateResult中,应用以下逻辑:
    • 如果Number1.TextNumber2.Text是空字符串,则将Result.Text设置为空字符串。
    • 否则,请执行您现有的逻辑。