好吧,这样做只是一个快速的代码,以便在我的代码中使用检查和单选框。这是我到目前为止(在底部)。所以,我想我可以设置一个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();
}
}
}
}
}
}
答案 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
。