带有if else条件的复选框和&&逻辑运算符

时间:2018-06-19 07:25:25

标签: c# android if-statement xamarin checkbox

我不知道我的病情是怎么回事。我知道这个陈述是正确的,但是有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();
}

3 个答案:

答案 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();
}