Создание мастеров для Windows Forms в [закрытом] C#

32
задан Hans Passant 26 February 2010 в 14:40
поделиться

2 ответа

Есть много способов сделать это. Создание формы для каждого шага мастера возможно, но очень неудобно. И некрасиво, много мерцания, когда пользователь меняет шаг. Сделать каждый шаг 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);
  }
}
133
ответ дан 27 November 2019 в 19:38
поделиться

Вам необходимо создать свой собственный, чтобы он соответствовал вашим предпочтениям. Совет будет для вас создать базовую форму с именем "frmWizard", тогда все ваши окна мастера будут унаследованы от нее. Вы должны поместить общие объекты или объекты-мастера в базовый класс и при необходимости изменить \ переопределить их в производном классе.

1
ответ дан 27 November 2019 в 19:38
поделиться
Другие вопросы по тегам:

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