CompactFramework 2.0 - формы и загрузка элементов управления в панель - PullRequest
3 голосов
/ 21 апреля 2009

Я пишу приложение на основе WinForms для Windows Mobile, ориентированное на CompactFramework 2.0 и кодирующее на C #.

В моем приложении есть меню, из которого пользователь может выбирать строгие функции работы.

Мой вопрос такой:

Должен ли я загружать UserControl в панель в главной форме для конкретных экранов заданий или лучше открыть новую форму поверх главной формы?

Кажется, они оба отвечают моим потребностям, и я не знаю, есть ли здесь "правильный" ответ.

Является ли один метод более правильным, чем другой?

Ответы [ 6 ]

2 голосов
/ 21 апреля 2009

Формы - это элементы управления (достаточно взглянуть на цепочку наследования), и сама форма не имеет много накладных расходов сама по себе. Он создает родное окно, но это все.

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

Можно утверждать, что формы требуют, чтобы вы воссоздали их каждый раз, но это не так. Если вы используете ShowDialog или Hide вместо Close, вы можете повторно использовать свои Формы и заплатить цену один раз. Преимущество здесь в том, что форма хранит ваши элементы управления в коллекции и управляет всем этим для вас, так что вам не о чем беспокоиться о ГК и помнить, какие корни у вас живые.

Парадигма UserControl более сложна - вам нужно самостоятельно управлять средствами загрузки и выгрузки, чтобы поддерживать низкую нагрузку на память. Сложность также увеличивает стоимость - стоимость обслуживания, стоимость поддержки и, вероятно, стоимость разработки. Однако в некоторых сценариях есть некоторые явные преимущества для UserControls. Если вы используете шаблон MVC / MVP и некоторую форму фреймворка, который обрабатывает ваши представления, USerControl делает действительно хороший просмотр с формой, превращающейся в рабочую область (классическим примером этого является SCSF для рабочего стола , и как и OpenNETCF.IoC Framework для CF).

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

2 голосов
/ 21 апреля 2009

По моему опыту, в зависимости от вашего оборудования, средства управления загрузкой намного превосходят запуск различных форм. Наши устройства (Motorola WT4090 с 32 мегабайтами) не имеют аппаратного ускорения, и рисование полных форм, кажется, действительно обременяет их. Каждый раз при запуске формы задержка составляет 4-6 секунд; управление, однако, почти мгновенно.

1 голос
/ 21 апреля 2009

Используйте формы. Так ведут себя другие приложения. Это способ, которым пользователь ожидает вашего приложения для работы.

Посмотрите на предустановленное приложение «Контакты»: при запуске вы получите список контактов. После выбора контакта открывается новая форма в верхней части текущего окна. Он показывает все детали контакта. Выбор «изменить» в меню откроет еще одну форму, позволяющую редактировать контакт. Приложение «Задачи» ведет себя точно так же.

Итак, пользователь знает: при щелчке где-нибудь откроется новая форма, а закрытие этой формы вернет меня к последней форме. Вы должны работать с этим знанием закона, а не против него. Когда вы используете одну форму, пользователь может несколько раз закрыть ее, когда он на самом деле хочет вернуться к последней форме.

С точки зрения производительности я обнаружил, что формы открываются достаточно быстро (<1 сек) на моем WM 5 и моих устройствах WM 6. </p>

И хотя с помощью UserControls можно добиться поведения, похожего на форму, использование форм, когда вам необходимо поведение, похожее на форму, представляется более простым.

Итак, мой итог: используйте формы!

P.S .: На CodeProject есть хорошая статья: Как создать MDI-приложение в Compact Framework

1 голос
/ 21 апреля 2009

Возможно, лучший ответ - создать серию пользовательских элементов управления и поэкспериментировать с их загрузкой в ​​основную форму. Тогда довольно просто попытаться создать серию форм, которые будут иметь только пользовательский контроль, чтобы увидеть, можно ли улучшить производительность.

Если вы не видите какого-либо выигрыша в производительности, кажется, что это просто вопрос предпочтений.

0 голосов
/ 21 апреля 2009

Мой совет - создавать новую форму Windows для каждого логического действия. Если вам нужна форма, которая является логически независимой, лучше иметь для нее отдельную форму Windows.

Чтобы ускорить процесс, вы можете создать все свои формы при запуске приложения. Таким образом, у вас будет задержка при запуске приложения (большинство пользователей будут в порядке с этим), но после этого все будет работать быстрее.

0 голосов
/ 21 апреля 2009

Зависит от сложности формы / Контроль. Использование маршрута UserControl обеспечит лучшую производительность, так как вам не придется работать со всеми функциями создания форм.

...