Хорошие шаблоны для создания мастера?

Я обычно использую a TabControl и так или иначе скройте вкладки и перейдите через них.

Мне любопытно на предмет других способов сделать это!!!

7
задан 2 revs, 2 users 100% 19 March 2010 в 21:01
поделиться

2 ответа

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

Сохранение индекса текущей панели и наличие кнопок «Далее» и «Назад», которые изменяют этот индекс соответствующим образом. При изменении этого индекса сделайте соответствующие панели видимыми / невидимыми по мере необходимости (только текущая панель должна быть видимой в данный момент).

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

5
ответ дан 7 December 2019 в 07:43
поделиться

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

Основные элементы:

  • Панель заголовка
  • Панель содержимого
  • Панель действий
  • Боковая панель

Как панель содержимого, так и панель действий используют ParentControlDesigner для включения отбрасывание элементов управления. Панель содержимого не позволяет вам перетащить прямо на нее, вместо этого она позволяет вам перейти на активную страницу (подпанель). Панель действий также имеет режим «по умолчанию», в котором создаются стандартные 4 кнопки (предыдущая, следующая, отмена, завершение). В основном я реализовал пользовательский режим, чтобы я мог скинуть его, то есть использовать кнопки DevEx вместо стандартных кнопок Winforms.

Заголовок в основном статический, это PictureBox и Label с настраиваемым изображением, текстом и шрифтом. (По умолчанию текст такой же, как заголовок страницы, а шрифт - это шрифт элемента управления с добавленным жирным шрифтом).

Затем есть набор структур данных, предоставляемых API:

  • Шаги (с именем, заголовком и т. Д., Также указывают, должны ли они быть связаны на боковой панели)
  • Рабочие процессы (т.е. где вы ' переход к следующему в зависимости от вашего выбора)
  • События проверки (как синхронные, так и асинхронные)
  • Действия (запускаемые до / после изменения страницы, нажатия кнопок и т. д.)
  • Эффекты перехода (я сделал это для весело, пользователям они нравятся)

Я собрал специальный редактор коллекции для шагов, которые, в свою очередь, создают субпанели для панели содержимого, как описано выше.Каждая панель просто добавляется прямо в коллекцию элементов управления, но единовременно отображается только одна в зависимости от свойства активного шага. Я помню, что стыковка никогда не работала должным образом, поэтому мне пришлось переопределить все методы изменения размера. Я никогда не удосужился создать смарт-тег, чтобы легко переключаться между страницами, но активную страницу (или индекс страницы) можно выбрать в сетке свойств.

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

Правильный дизайн и тестирование занимает довольно много времени, но я не помню, чтобы использовал какие-либо хитрые дизайнерские приемы, просто приходилось подходить к проблеме методически, как уже упоминалось, с точки зрения отдельных элементов пользовательского интерфейса (как времени выполнения, так и дизайна -time) и структуры данных, и как они взаимодействуют.

Имейте в виду, что все это было сделано с целью создания повторно используемого компонента мастера, потому что нам нужно было разработать около 10 из них для конкретного приложения (и это пригодится и для других проектов). Если бы мне просто нужно было собрать одного быстрого мастера, я бы, вероятно, не столкнулся со всеми этими проблемами, я бы просто сделал то, что вы делаете, - использовал элемент управления вкладками и несколько панелей потока. Или, еще лучше, я бы использовал готовый элемент управления мастера, который сейчас доступен во многих библиотеках Winforms, например, в библиотеке DX.

2
ответ дан 7 December 2019 в 07:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: