我不知道我的病情是怎么回事。我知道这个陈述是正确的,但是有bug,我真的不知道为什么我的代码不能正常工作。选中复选框1和复选框2时,它不起作用。它只能在单一条件下工作,如
if (chk1.Checked == true)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
这是我的代码:
if (chk1.Checked == true)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk2.Checked == true))
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "full rice & Extra Rice", ToastLength.Short).Show();
}
else if ((chk2.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "Extra Sauce & Extra Rice", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk2.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "full rice | Extra Sauce | Extra Rice", ToastLength.Short).Show();
}
答案 0 :(得分:4)
更改ElseIF
语句的顺序,因为无论何时选中chk1
,无论用户选中chk2还是chk3,第一条语句都会执行。 CheckBox.Checked
也是bool
属性,因此无需将其与真或假
if (chk1.Checked && chk2.Checked && chk3.Checked)
{
Toast.MakeText(this, "full rice | Extra Sauce | Extra Rice", ToastLength.Short).Show();
}
else if (chk1.Checked && chk2.Checked )
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else if (chk1.Checked && chk3.Checked )
{
Toast.MakeText(this, "full rice & Extra Rice", ToastLength.Short).Show();
}
else if (chk2.Checked && chk3.Checked)
{
Toast.MakeText(this, "Extra Sauce & Extra Rice", ToastLength.Short).Show();
}
else if (chk1.Checked)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
答案 1 :(得分:2)
您的第一个条件是使前两个else if
无效。
检查chk1时,它总是落入第一个条件。
你应该这样做:
if (chk1.Checked == true)
{
if ((chk2.Checked == true)) //chk1 and chk2 are checked
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else //only the chk1 is checked
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
}
希望你能得到这个想法。
答案 2 :(得分:2)
你可以重新安排你的条件(检查其他答案),把限制更多的条件放在首位,但我会建议一个更清洁,更容易解决的问题。
List<string> additions = new List<string>();
if (chk1.Checked) additions.Add("Full rice");
if (chk2.Checked) additions.Add("Extra Sauce");
if (chk3.Checked) additions.Add("Extra Rice");
if (additions.Count > 0)
{
string text = String.Join(" & ", additions);
Toast.MakeText(this, text, ToastLength.Short).Show();
}