Думаю, вам лучше добавить некоторые функции в свой пользовательский элемент управления, чтобы он мог описывать состояние своих собственных флажков, а не копаться в нем, чтобы найти его и выполнить логику. Обычно в ОО-программировании, когда мы инкапсулируем вещи внутри класса, мы также предоставляем средства доступа общего назначения, «видимые извне» для описания внутреннего состояния дел, вместо того, чтобы позволить интересам внешнего кода ковыряться в классе, чтобы узнать, чего они хотят
В какой-то момент вы добавили эти пользовательские элементы управления в форму либо непосредственно в конструкторе, либо программно. В первом случае они будут иметь собственное имя:
var u1 = usercontrol1.GetCheckboxStateArray();
var u2 = usercontrol2.GetCheckboxStateArray();
Etc
Или, может быть, вы добавили их программно, и в этом случае имеет смысл отслеживать их в списке по мере их добавления:
protected List<UserControl> _ucList = new List<UserControl>();
...
foreach(var result in somedatabasequery){
var uc = new UserControl(result.Whatever);
this.Controls.Add(uc);
_ucList.Add(uc);
}
Тогда этот список можно повторить. Конечно, вы можете утверждать, что «хорошо. Контроль также является коллекцией, поэтому зачем добавлять их в другой список, когда они уже находятся в доступной коллекции» - по причинам, которые вы здесь; .Controls - это общее описание иерархии всех элементов управления в форме, оно содержит вещи, которые нам не нужны, и их трудно перебирать. Этот список - это просто все, что нас интересует
Кроме того, описанный вами пользовательский интерфейс нетипичен. Более обычным способом скрытия и отображения элементов управления при выделении чего-либо, содержащего немного текста, был бы TabControl. Возможно, вам будет проще проходить циклы, если вы продолжите использовать этот метод «поиска UserControls в наборе элементов управления» - у tabcontrols есть вкладки, у вкладок, вероятно, будет .Controls, который просто содержит ваш UserControl. Закладка по сути заботится о том, чтобы показывать и скрывать элементы управления при нажатии на страницы, что может упростить ваш код