Организация элементов управления WinForms с использованием панелей - PullRequest
0 голосов
/ 18 октября 2011

У меня есть приложение 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 отдельных элементов управления, но мне интересно, есть ли еще лучший способ? Сейчас я рассматриваю возможность создания трех панелей (по одной для каждого сценария) и добавления только необходимых элементов управления к каждой панели. Мне интересно, есть ли какая-нибудь лучшая практика в отношении таких проблем с макетом?

1 Ответ

2 голосов
/ 18 октября 2011

Вы можете создать List<Control> или Control[] для каждого сценария, затем прокрутить элементы управления в списках и установить их свойства Visible в зависимости от ситуации.

...