C # нужен совет по простому вопросу о навигации по форме - PullRequest
6 голосов
/ 10 февраля 2011

Мне нужно смоделировать форму, похожую на интерфейс, который можно увидеть при установке любого программного обеспечения. Существуют кнопки «Вперед» и «Назад», и вся введенная пользователем информация обрабатывается только тогда, когда он нажимает кнопку «Готово».
Когда пользователь нажимает кнопку «Назад», ему / ей показывается предыдущая введенная информация.
Когда пользователь нажимает следующую кнопку, ему показывается следующий экран. Вся отображаемая информация отображается в одной форме.

Есть 3 раздела, которые мне нужно показать пользователю.

  • Раздел 1 - нажатие следующей кнопки покажет раздел 2
  • Раздел 2 - нажатие кнопки «Назад» отобразит раздел 1, а нажатие следующей кнопки - раздел 3
  • Раздел 3 - нажатие предыдущей кнопки покажет раздел 2, а нажатие кнопки завершения обработает всю информацию, введенную в разделах 1,2 и 3.

В настоящее время планируется реализовать решение, указанное ниже:

  1. Создать одну форму
  2. Добавьте все элементы для раздела 1 и создайте следующее событие кнопки, которое скроет все элементы, показанные в разделе 1, включая кнопку, и покажет все элементы раздела 2.
  3. Создайте событие кнопки для кнопки «Назад» для раздела 2, чтобы оно скрывало все элементы раздела 2, включая кнопку, и отображало все элементы раздела 1 и следующую кнопку, чтобы скрыть все элементы раздела 2, включая кнопку показать все элементы в разделе 3
  4. Создать подобное событие кнопки для секции 3

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

Ответы [ 5 ]

2 голосов
/ 10 февраля 2011

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

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

KryptonNavigator

2 голосов
/ 10 февраля 2011

Звучит так, будто вам нужен магический контроль. Попробуйте один из них:

http://www.codeproject.com/KB/miscctrl/ak_wizard.aspx

https://stackoverflow.com/questions/195255/best-wizard-control-for-net-windows-forms

0 голосов
/ 10 февраля 2011

Да, как сказал iain, вероятно, вам лучше всего подходит элемент управления мастера, но если это не сработает, попробуйте поискать элементы управления MultiView или Accordian. Они создают элементы управления, специально предназначенные для скрытия / отображения разделов в форме, поэтому вам не нужно переходить из формы в форму, и, таким образом, вы все время находитесь в одной и той же области видимости. Облегчает заполнение полей.

0 голосов
/ 10 февраля 2011

Вы можете использовать структуру usercontrol для достижения такого поведения.Вы можете добавить простую панель управления и изменить содержимое панели в соответствии с нажатыми кнопками.Вы можете просто изменить содержимое панели, используя yourPanel.Controls.Add(your_user_control).Таким образом, различные формы управления могут быть реализованы на winform.

Спасибо

0 голосов
/ 10 февраля 2011

Вы можете создать пользовательские элементы управления для трех разных экранов, а затем просто добавить эти 3 элемента управления в форму, упрощая скрытие / отображение соответствующих элементов управления.

Или же вы можете создать три элемента управления.разделите формы, а затем покажите свои формы по порядку и выполните действия в программе Main(), а не используйте форму в качестве объекта запуска.Как

static void Main()
{
  Form1 f1 = new Form1();
  if (f1.ShowDialog() == DialogResult.OK) 
  {
    // do actions
    // show next form
    // etc.
  }
}
...