为什么 Tryparse 不工作并立即抛出捕获?

Why is the Tryparse not working and instantly throwing the catch?

结果不会进入我的结果文本框,只要我在第一个中输入任何内容,它就会立即给我 "Number 2 is invalid" 捕获。我是新手,不明白为什么它不起作用。

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.");
            }
        }
    }
}

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

这是我的建议:

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