问题是在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;
}
}
Run Code Online (Sandbox Code Playgroud)
checkboxes
组名在哪里.
您可以使用简单的LINQ查询
var checked_boxes = yourControl.Controls.OfType<CheckBox>().Where(c => c.Checked);
Run Code Online (Sandbox Code Playgroud)
yourControl
包含复选框的控件在哪里.
checked_boxes
现在是一个实现IEnumerable<CheckBox>
代表查询的对象.通常,您希望使用循环遍历此查询foreach
:
foreach(CheckBox cbx in checked_boxes)
{
}
Run Code Online (Sandbox Code Playgroud)
您也可以List<Checkbox>
通过调用.ToList()
check_boxes或直接在Where(...)
.之后调用此查询到list().
由于您希望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);
Run Code Online (Sandbox Code Playgroud)
我还添加了一个OrderBy
子句,以确保复选框按其排序Text
.
归档时间: |
|
查看次数: |
12807 次 |
最近记录: |