C#有多个检查和无线电复选框,并根据哪些检查进行计算?

时间:2016-03-25 22:36:28

标签: c# checkbox

好吧,这样做只是一个快速的代码,以便在我的代码中使用检查和单选框。这是我到目前为止(在底部)。所以,我想我可以设置一个if语句字符串,然后开始查看是否所有3都被检查,如果不是,它会通过并查看是否检查第一个是否等等。虽然,它只能检查一个复选框,当我检查所有三个复选框时,它显示最终的计算。所以在我的情况下,如果我已经检查过3次,那么它只会显示Volt + NonExploding计算,如果它全部添加,它会显示$ 50,100而不是$ 51,600。我可以获得一些关于做什么的快速帮助,它注意到所有三个都被检查而不是仅仅进行最终检查计算?感谢您的帮助,非常感谢。

        private void button_Calculate_Click(object sender, EventArgs e)
    {
        //Validating options 
        if (radioButton_ChevVolt.Checked || radioButton_FordPinto.Checked)
        {
            //no code needed
        }
        else
        {
            MessageBox.Show("Please Choose One of the Vehicles");
            return;
        }
        //Processing Input
        double SunRoof = 1000;
        double DVD = 500;
        double NonExploding = 100;
        double Volt = 50000;
        double Pinto = 1000;
        double TotalCost = 0;

        if (radioButton_ChevVolt.Checked)
                    {
                       TotalCost = Volt;
                       textBox_TotalCost.Text = TotalCost.ToString();
                    {
                    if (checkBox_SunRoof.Checked || checkBox_DVD.Checked || checkBox_NonExploding.Checked)
                    {
                       TotalCost = Volt + DVD + SunRoof + NonExploding;
                       textBox_TotalCost.Text = TotalCost.ToString();
                    }
                    if (checkBox_SunRoof.Checked)
                    {
                        TotalCost = Volt + SunRoof;
                        textBox_TotalCost.Text = TotalCost.ToString();
                    }
                    if (checkBox_DVD.Checked)
                    {
                        TotalCost = Volt + DVD;
                        textBox_TotalCost.Text = TotalCost.ToString();
                    }
                    if (checkBox_NonExploding.Checked)
                    {
                        TotalCost = Volt + NonExploding;
                        textBox_TotalCost.Text = TotalCost.ToString();
                    }


            }
        }



    }
}

}

1 个答案:

答案 0 :(得分:1)

您的代码正在执行的是运行所有if语句 - 它不仅仅是进入最后一个语句。只是最后一个是最后一个,所以看起来就是这样。

这是一个简单的解决方法:

        if (checkBox_SunRoof.Checked && checkBox_DVD.Checked && checkBox_NonExploding.Checked)
        {
            TotalCost = Volt + DVD + SunRoof + NonExploding;
            textBox_TotalCost.Text = TotalCost.ToString();
        }
        else if (checkBox_SunRoof.Checked)
        {
            TotalCost = Volt + SunRoof;
            textBox_TotalCost.Text = TotalCost.ToString();
        }
        else if (checkBox_DVD.Checked)
        {
            TotalCost = Volt + DVD;
            textBox_TotalCost.Text = TotalCost.ToString();
        }
        else if (checkBox_NonExploding.Checked)
        {
            TotalCost = Volt + NonExploding;
            textBox_TotalCost.Text = TotalCost.ToString();
        }

在我看来,最初的||应为&&才能使其发挥作用。

我也倾向于使用三元运算符?:来查看此计算。您的代码可能如下所示:

TotalCost += radioButton_ChevVolt.Checked ? Volt : 0.0;
TotalCost += checkBox_SunRoof.Checked ? SunRoof : 0.0;
TotalCost += checkBox_DVD.Checked ? DVD : 0.0;
TotalCost += checkBox_NonExploding.Checked ? NonExploding : 0.0;
textBox_TotalCost.Text = TotalCost.ToString();

最后,另一个提示。不要将double用于货币金额,因为它是为科学价值而设计的。请改用decimal