Если я правильно помню, вы отключаете панель [используя свойство enabled], когда флажок снят, это отключит элементы на панели. Вам не нужно отключать все элементы на панели по отдельности. Аналогично, когда вы снова включите панель, она снова включит дочерние элементы управления.
myPanel.Enabled = false; //Child controls disabled
myPanel.Enabled = true; //Child controls enabled
Вы также можете перебрать каждый элемент управления на панели, используя:
foreach(Control control in myPanel)
{
//Assume for the purpose of demonstration
//that each control within myPanel has an
//"Enabled" property
control.Enabled = myPanel.Enabled;
}
Это установило бы свойство enabled каждого элемента управления на панели таким, чтобы оно совпадало со свойством панели - на самом деле, это избыточно требованию и поэтому не очень желательно. Я просто предоставил этот метод для демонстрационных целей.
Редактировать: Это может быть расширено [например] дизайном Роба для пользовательского элемента управления, который можно добавить в свой пользовательский элемент управления для отображения коллекции элементов панели:
public Control[] Controls
{
return controlPanel.Controls;
}
Это, по существу, позволит модифицировать элементы управления панели управления извне вашего пользовательского элемента управления и не потребует назначения элементов управления в определении панели внутри пользовательского элемента управления.