Лучший способ загрузить тяжелый интерфейс с большим количеством элементов управления - PullRequest
2 голосов
/ 23 февраля 2012

Я работаю в приложении Windows Forms, оно требует много (и я имею в виду много) элементов управления.Использование элементов управления вкладками для их организации (иногда вложенные элементы управления вкладками).

Я читал, как загружать приложение быстрее, и многие люди говорили, что дважды подумают, действительно ли нужны элементы управления .Ну, если честно, я думаю, что можно уменьшить количество используемых элементов управления, НО клиент запросил его таким образом, поэтому я почти ничего не могу с этим поделать.

Я читал, что должен использовать многопоточную тактикуно есть аппаратное ограничение: приложение ДОЛЖНО работать на обычном компьютере.Это действительно боль, потому что я ограничен с точки зрения времени загрузки и количества места, которое я могу использовать для размещения элементов управления.

Мне было интересно, могу ли я просто загрузить одну или две вкладки перед формойи затем загрузить другие , это будет возможно / правильно / эффективно?Если это так, как я могу этого достичь?Я также планировал использовать дочерние объекты MDI, но мне нужно в какой-то момент извлечь всю информацию из всех элементов управления (из абсолютно всех вкладок и вложенных вкладок).

Не могли бы вы дать мне несколько советов?Есть ли у вас опыт работы над чем-то похожим?

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Одной из стратегий является создание вашей главной страницы с пустым TabControl TabPages.Затем вы можете создать несколько вспомогательных форм (по одной на каждый требуемый TabPage), каждая из которых содержит один элемент управления Panel с видимостью Public (измените свойство Modifiers Panel на Public), содержащее реальные элементы пользовательского интерфейса, которые выпоместил бы на TabPage.

Когда пользователь нажимает на пустую TabPage, вы создаете вспомогательную форму (вы ее не показываете, просто создаете), а затем получаете доступ к элементу управления Panelво вспомогательной форме вы можете перезаписать ее на пустую страницу вкладки, например,

AuxForm1 frm = new AuxForm1();
frm.MainPanel.Parent = this.tabControl1.TabPages[0];  

Это будет задерживать создание элемента управления TabPage до тех пор, пока пользователь не нажмет на панель :) Надеюсь, это поможет!

2 голосов
/ 23 февраля 2012

Мне было интересно, смогу ли я просто загрузить одну или две вкладки перед отображением формы, а затем загрузить другие

Вы можете сделать так, чтобы каждая "вкладка" содержала UserControl, и загрузитьтот UserControl по требованию, когда вкладка активирована.Это, по крайней мере, помешает вам инициализировать все при запуске.

1 голос
/ 23 февраля 2012

«много элементов управления» не является обязательным условием. Раскрывающийся список с десятками миллионов строк - это совсем другая проблема, чем пользовательский интерфейс мастера с тысячами шагов, требующий разных ответов.

Почему клиент "запросил это таким образом"? Нам нужно знать фактические требования к поставляемому товару, чтобы ответить на ваш вопрос. Вы показали им альтернативы?

Сначала опубликуйте несколько своих макетов. Если у вас еще нет макетов, сделайте их и выполните бумажное тестирование, а затем опубликуйте их.

Кто "много людей"? Тестеры? Клиенты? Анонимные постеры на форуме? Разместите макеты на https://ux.stackexchange.com/ и попросите комментарии.

«Я могу просто загрузить одну или две вкладки, прежде чем форма будет показана»? Конечно, вы можете это сделать, но почему вы предполагаете, что ваш пользовательский интерфейс будет «одной или двумя вкладками», прежде чем вы покажете нам какие-либо требования? Получить требования, сделать макеты, а затем задать конкретные, отвечающие вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...