C #: двухэтапное вычисление текстового поля дает только правильный результат при двойном нажатии моей кнопки вычисления - PullRequest
0 голосов
/ 11 февраля 2011

Я точно понимаю, почему это происходит, но я не могу понять, как это исправить. Textbox3 вытягивает начальное значение textbox2, а не новое вычисленное значение. Это не школьный проект, а простой калькулятор для моего офиса для некоторого радиооборудования, которое мы используем. Я мог бы исправить это, дважды щелкнув программно и т. Д., Но я хочу знать, как исправить это правильно. Мои программы всегда настолько просты, что меня обвиняют в том, что это «домашняя работа», но я могу гарантировать, что это не так. Я уверен, что это просто, поскольку пара паратезий отсутствует ... Заранее спасибо

    private void button1_Click(object sender, EventArgs e)
    {
        if (double.TryParse(textBox1.Text, out origin)
            && double.TryParse(textBox2.Text, out tb2)
             && double.TryParse(textBox4.Text, out channels))

            textBox2.Text = (30.00 - (10 * Math.Log10(origin))).ToString("n2");
            textBox3.Text = (tb2 - (10 * Math.Log10(channels))).ToString("n2");          

    }

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Измените расчет на:

tb2 = 30.00 - (10 * Math.Log10(origin));
var tb3 = tb2 - (10 * Math.Log10(channels));
textBox2.Text = tb2.ToString("n2");
textBox3.Text = tb3.ToString("n2");
0 голосов
/ 11 февраля 2011

Вы назначаете tb2 перед тем, как изменить значение в textbox2. Вы должны изменить код на:

            if (double.TryParse(textBox1.Text, out origin)
         && double.TryParse(textBox4.Text, out channels))
        {
            textBox2.Text = (30.00 - (10 * Math.Log10(origin))).ToString("n2");
            if (double.TryParse(textBox2.Text, out tb2)
            {
                textBox3.Text = (tb2 - (10 * Math.Log10(channels))).ToString("n2");
            }
        }
...