首页 > 解决方案 > 多选复选框(for语句)

问题描述

我最近开始编码我是一年级的 IT 学生。我的教授给了我们一个项目,我们应该在其中创建任何类型的管理系统,我选择了快餐类型。

我在制作结帐功能时偶然发现了一些问题。我有这个带有单独复选框的多个图片框,我创建了一个功能,只要用户单击图片框,复选框就会被选中。 我目前的项目

我遇到的问题是我想用 if 语句获取复选框的所有数据(文本),但这会很乏味,因为我有 15 个带复选框的图片框。有没有更简单的方法可以用 for 语句做到这一点?或任何只是为了缩短我的代码。

这是我当前的代码

private void button1_Click(object sender, EventArgs e)
    {
        string food1 = "";
        string food2 = "";
        //...........................food15

        if (checkBox1.Checked)
        {
            food1 = checkBox1.Text;
        }
        if (checkBox2.Checked)
        {
            food2 = checkBox2.Text;
        }
        //.............................................checkbox15
        if (food1 != "" || food2 != "")
        {
            MessageBox.Show(food1 + food2);
        }
        else
        {
            MessageBox.Show("Pick something ");
        }
    }

标签: c#.netwinforms

解决方案


像这样的东西:

var foods = new List<string>();

foreach(var checkbox in Controls.OfType<CheckBox>())
{
    if(checkbox.Checked)
    {
        foods.Add(c.Text);
    }
}

if(foods.Count != 0){
    //do popup
} else {
    //pick something
}

表单提供了一个Form.Controls集合,其中包含该表单上的所有控件;OfType<CheckBox>()过滤列表,所以我们只循环复选框。

我还使用了食物列表而不是单独的 food1,food2 字符串

然后您可以检查计数并使用它。

你也可以String.Join(", ", foods.ToArray());用逗号单独列出你的食物


推荐阅读