Если я правильно помню, вы отключите панель [с помощью включенного свойства], когда флажок снят, это отключит элементы на панели. Затем вам не нужно отключать все элементы внутри панели отдельно. Аналогично, когда вы снова включите панель, она снова включит дочерние элементы управления.
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;
}
Это установить включен свойство каждого элемента управления на панели, чтобы соответствовать панели - на самом деле, это избыток в и поэтому не очень желательно. Я просто предоставил этот метод для демонстрационных целей.
Edit: Это может быть продлен [например] дизайн Роба для пользовательского элемента управления, который вы могли бы добавить свойство элемента управления пользователя, чтобы выставить коллекцию элементов управления на панели в:
public Control[] Controls
{
return controlPanel.Controls;
}
Это было по существу разрешить изменение элементов управления вашего элемента управления вне вашего пользовательского элемента управления и не требовать назначения элементов управления в определении панели внутри пользовательского элемента управления.
Приятное аккуратное решение, стоит отметить, хотя вам не нужно * Ajax для вашего решения для работы, это просто сделало бы его немного более удобным для пользователя. – BenAlabaster
Меня постоянно обвиняют в том, что я слишком хорош для своих пользователей. –
+1 хотя для хорошего примера того, как реализовать это – BenAlabaster