c# - 多选复选框(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 ");
}
}
解决方案
像这样的东西:
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());
用逗号单独列出你的食物
推荐阅读
- reactjs - 在不缩放的情况下裁剪three.js画布
- javascript - 当它由JS或Jquery加载时,我如何才能在chrome中只加载网页的选定部分
- php - 如何从字符串中删除(“)字符
- logging - Stackdriver 将来自 GKE 的应用程序日志解析为 textpayload 而不是 jsonpayload
- google-bigquery - BigQuery 处理 SPLIT、UNNEST 时的良好做法
- list - 在 Haskell 中,[0.1..1] 返回 [0.1,1.1]。为什么?
- sql - 分开门牌号和地址但如果没有门牌号怎么办
- python - 一旦遇到一行,在 40 天内删除所有行,然后重复
- angular - 我可以在跨域的 iFrame 上使用 Chrome 中的 Angular 开发工具吗?
- typescript - 如何将字符串类型转换为 Typescript 中的一种对象类型?