Почему Tryparse не работает и сразу бросает добычу? - PullRequest
0 голосов
/ 07 октября 2018

Результат не попадет в мое текстовое поле Result, и как только я наберу что-нибудь в номер один, он сразу же даст мне «Номер 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 голосов
/ 07 октября 2018

Я предполагаю, что оба текстовых поля изначально пусты.Как только вы введете что-то в Number1, этот код запустится, и Number2 будет пустым.Пустая строка недопустима double, поэтому TryParse вернет false.

Вот что я бы предложил:

  • Сначала вытащите эту логику вотдельная функция.Назовите это UpdateResult или что-то подобное.
  • Вызовите эту функцию из Number1_TextChanged и Number2_TextChanged
  • В UpdateResult, примените следующую логику:
    • ЕслиNumber1.Text или Number2.Text - пустые строки, затем установите Result.Text в пустую строку.
    • В противном случае выполните существующую логику.
...