Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:两次单击“我的计算”按钮时,两步文本框计算只能产生正确的结果_C#_Button_Click - Fatal编程技术网

C#:两次单击“我的计算”按钮时,两步文本框计算只能产生正确的结果

C#:两次单击“我的计算”按钮时,两步文本框计算只能产生正确的结果,c#,button,click,C#,Button,Click,我完全理解为什么会发生这种情况,但我不知道如何解决它。Textbox3提取的是textbox2的初始值,而不是新的计算值。这不是一个学校的项目,而是一个简单的计算器,用于我办公室的一些我们使用的无线电硬件。我可以通过编程方式让按钮点击两次来解决这个问题,但我想知道如何用正确的方式解决这个问题。我的程序总是那么简单,我被指责为“家庭作业”,但我可以保证它不是。我相信这很简单,因为有两个偏执狂失踪了…提前谢谢 private void button1_Click(object sender,

我完全理解为什么会发生这种情况,但我不知道如何解决它。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");          

    }

在更改textbox2中的值之前,您正在分配tb2。您应该将代码更改为:

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

将计算更改为:

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

谢谢大家,我只是碰巧先试试这个,它成功了!我很感激你的快速回复!