从.c#.net中的一堆复选框中选中的复选框

SAL*_*ZZZ 5 .net c# winforms

问题是在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组名在哪里.

slo*_*oth 7

您可以使用简单的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.