Подтвердить что ты не робот

Создание Wizard для Windows Forms в С#

Я новичок в создании Wizards для приложения Windows Forms в С#.Net. Поэтому у меня нет никакой идеи в создании мастера. Пожалуйста, дайте мне несколько советов о создании нескольких мастеров.

С уважением, ravi

4b9b3361

Ответ 1

Много способов сделать это. Создание формы для каждого шага мастера возможно, но очень неудобно. И некрасиво, много мерцания, когда пользователь меняет шаг. Выполняя каждый шаг, которым может работать пользователь UserControl, вы просто включаете и удаляете его из коллекции элементов управления. Или сделайте одно из них 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);
  }
}

Ответ 2

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);
    }        

    protected override void OnKeyDown(KeyEventArgs ke)
    {
        // Block Ctrl+Tab and Ctrl+Shift+Tab hotkeys
        if (ke.Control && ke.KeyCode == Keys.Tab) 
            return;
        base.OnKeyDown(ke);
    }
}

Ответ 3

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