作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
c#.NET、Visual Studio、Windows Form Application下遇到的问题
我有一堆复选框以一种形式和一个面板随机放置。因此,如果在表单中选择了任何 checkbox
,则应该将其值相加。
底线:与其使用大量“If-else 循环”,不如评估其是否已被检查。我想使用“for 循环”来简化它。
有没有我可以使用的 Checkbox group name
类型的功能???
我想编写这样的代码:
for(int i=0;i<checkboxes.length;i++)
{
string str;
if(chkbox.checked)
{
str+=chkbox.value;
}
}
checkboxes
是组名。
最佳答案
您可以使用简单的 LINQ 查询
var checked_boxes = yourControl.Controls.OfType<CheckBox>().Where(c => c.Checked);
哪里yourControl
是包含您的复选框的控件。
checked_boxes
现在是一个实现 IEnumerable<CheckBox>
的对象表示查询。通常你想用 foreach
遍历这个查询循环:
foreach(CheckBox cbx in checked_boxes)
{
}
您还可以通过调用 List<Checkbox>
将此查询转换为列表 ( .ToList()
) ,在 checked_boxes 上或直接在 Where(...)
之后.
因为你想连接 Text
复选框的单个字符串,你可以使用 String.Join
.
var checked_texts = yourControl.Controls.OfType<CheckBox>()
.Where(c => c.Checked)
.OrderBy(c => c.Text)
.Select(c => c.Text);
var allCheckedAsString = String.Join("", checked_texts);
我还添加了一个 OrderBy
子句以确保复选框按其 Text
排序.
关于c# - 从 .c#.net 中的一堆复选框中选择复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13835416/
我是一名优秀的程序员,十分优秀!