繁体   English   中英

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

[英]Checkbox with if else condition and && logical operator

我不知道我的状况如何。 我知道该声明是正确的,但存在错误,而且我真的不知道为什么我的代码无法正常工作。 选中复选框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();
}

更改ElseIF语句的顺序,因为无论何时选中chk1无论用户选中chk2还是chk3,都会执行第一条语句。 同样CheckBox.Checkedbool属性,因此无需将其与true或false进行比较

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

您的第一个条件是使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();
    }
}

希望你能明白。

您可以重新排序您的条件(检查其他答案),将限制性更强的规则放在第一位,但是我希望提出一种更干净,更易于维护的解决方案。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM