Есть много способов сделать это. Создание формы для каждого шага мастера возможно, но очень неудобно. И некрасиво, много мерцания, когда пользователь меняет шаг. Сделать каждый шаг UserControl может работать, вы просто переключаете их в и из коллекции Controls формы. Или сделайте один из них Visible = true для каждого шага. Однако дизайн UC становится запутанным, приходится добавлять публичные свойства для каждого элемента пользовательского интерфейса.
Простой и RAD способ - использовать TabControl. Он очень хорошо работает в дизайнере, поскольку позволяет переключать вкладки во время проектирования и размещать элементы управления на каждой вкладке. Переключение шагов тривиально, просто измените свойство SelectedIndex. Единственное, что нетривиально, - это скрыть вкладки во время выполнения. Это легко сделать, обработав сообщение Windows. Добавьте новый класс к вашей форме и вставьте в него код, показанный ниже. Скомпилируйте. Переместите новый элемент управления из верхней части панели инструментов на вашу форму.
using System;
using System.Windows.Forms;
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}
Вам необходимо создать свой собственный, чтобы он соответствовал вашим предпочтениям. Совет будет для вас создать базовую форму с именем "frmWizard", тогда все ваши окна мастера будут унаследованы от нее. Вы должны поместить общие объекты или объекты-мастера в базовый класс и при необходимости изменить \ переопределить их в производном классе.