Просто измените цикл for, как показано ниже:
for (int i = 0; i < CheckBoxList3.Items.Count; i++)
if (CheckBoxList3.Items[i].Selected)
str1 += CheckBoxList3.Items[i].Text.ToString() + ",";
for (int i = 0; i < CheckBoxList4.Items.Count; i++)
if (CheckBoxList4.Items[i].Selected)
str1 += CheckBoxList4.Items[i].Text.ToString() + ",";
for (int i = 0; i < CheckBoxList5.Items.Count; i++)
if (CheckBoxList5.Items[i].Selected)
str1 += CheckBoxList5.Items[i].Text.ToString() + ",";
ОБНОВЛЕНИЕ
@ Caner LENGER имеет хорошую идею. Но, как я уже упоминал в комментарии к его ответу, это частично верно, потому что list.Min
возвращает минимальное значение списка, которое в вашем случае не сработает. Почему?
Представьте, что у вас есть 3 CheckBoxList, в каждом из которых есть по 3 элемента, кроме одного, в котором есть 4. Используя list.Min
, вы получите 3, независимо от того, что находится внутри 4-го значения CheckBoxList.
Итак, я изменил его код и вот результат теста:
public static string CombineCheckboxLists(params CheckBoxList[] list)
{
StringBuilder sb = new StringBuilder();
foreach (CheckBoxList checkBoxList in list)
{
int counter = checkBoxList.Items.Count;
for (int i = 0; i < counter; i++)
sb.Append(checkBoxList.Items[i].Selected ? checkBoxList.Items[i].Text + "," : "");
}
return sb.ToString();
}