У меня есть приложение Windows Forms, которое содержит групповое окно с примерно 30 элементами управления. Для примера скажем, что есть 15 меток и 15 текстовых полей. Этот групповой блок и элементы управления в нем используются для отображения трех различных сценариев:
Сценарий 1 - требует, чтобы все элементы управления были видны
Сценарий 2 - требует, чтобы метка / текстовое поле # 1, 4, 11 и 14 были видны, а остальные были скрыты
Сценарий 3 - требует, чтобы метка / текстовые поля # 3, 9, 11 и 13 были видны, а остальные скрыты
Сценарий 1, очевидно, достаточно прост. Но два других сценария немного больше работы. Первоначально я написал код для ручного показа / скрытия каждого из элементов управления следующим образом:
ConfigureUIForScenario2()
{
label1.visible = true;
textbox1.visible = true;
label2.visible = false;
textbox2.visible = false;
label3.visible = false;
textbox3.visible = false;
label4.visible = true;
textbox4.visible = true;
...
}
Это было чрезвычайно громоздко, и кажется, что должен быть другой путь. Я рассматривал панели для организации элементов управления, но, поскольку элементы управления, которые необходимо показать / скрыть в сценариях 2 и 3, обычно не являются смежными, лучшее, что дала эта идея, - это возможность поместить каждую метку и соответствующее текстовое поле. в панель и показать / скрыть панель. Настройка видимости 15 панелей - это, конечно, меньше работы, чем ручная настройка 30 отдельных элементов управления, но мне интересно, есть ли еще лучший способ? Сейчас я рассматриваю возможность создания трех панелей (по одной для каждого сценария) и добавления только необходимых элементов управления к каждой панели. Мне интересно, есть ли какая-нибудь лучшая практика в отношении таких проблем с макетом?