关于for循坏嵌套循坏的写法


     string qxsz1 = "";
            string qxsz2 = "";
            string qxsz3 = "";
            string qxsz4 = "";

            for (int j = 0; j < CheckBoxList1.Items.Count; j++)
            {
                if (CheckBoxList1.Items[j].Selected == true)
                    qxsz1 += CheckBoxList1.Items[j].Value + ",";
            }
            for (int j = 0; j < CheckBoxList2.Items.Count; j++)
            {
                if (CheckBoxList2.Items[j].Selected == true)
                    qxsz2 += CheckBoxList2.Items[j].Value + ",";
            }
            for (int j = 0; j < CheckBoxList3.Items.Count; j++)
            {
                if (CheckBoxList3.Items[j].Selected == true)
                    qxsz3 += CheckBoxList3.Items[j].Value + ",";
            }
            for (int j = 0; j < CheckBoxList4.Items.Count; j++)
            {
                if (CheckBoxList4.Items[j].Selected == true)
                    qxsz4 += CheckBoxList4.Items[j].Value + ",";
            }

            string qx = qxsz1 + qxsz2 + qxsz3 + qxsz4 + qxsz5 + qxsz6 + qxsz7;

获取多个单选框选择的值 ,如何用一个循坏得到 qx ,谢谢

checkedListBox本身有SelectedItems属性,可以直接获取到全部选中的项
如果你能确定每个只会选择一个的话,那么直接
checkedListBox.SelectedItems[0]就是选中的项目
但是如果可以多选,你就只能循环了
毕竟这么多list不是同一个,行数也不一样,不可能使用同一个循环来做
如果行数都一样还可以合并


  for (int i = 0; i < 4; i++)
            {
                for (int j = 1; j < (this.FindControl("CheckBoxList" +i) as CheckBoxList).Items.Count; j++)
            {
                if ((this.FindControl("CheckBoxList" + i) as CheckBoxList).Items[j].Selected == true)
                    qxsz7 += (this.FindControl("CheckBoxList" + i) as CheckBoxList).Items[j].Value + ",";
            }
            }

大佬,看看我这个思路可以吗

写了一个只用LINQ的示例,CheckedListBox个数是动态的,先看运行效果:

img

示例核心代码:

private void btnGetValue_Click(object sender, EventArgs e)
{
    var result = panel1
        .Controls
        .OfType<CheckedListBox>()
        .Select(ck => ck.CheckedItems
            .Cast<CheckedBoxItem>()
            .Select(x => x.Value)
        )
        .Where(x => x.Any())
        .Select(selected => string.Join(",", selected))
        .ToList();
    richTextBox1.Text = string.Join(",", result);
}