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

c# winforms wizard

39033 просмотра

3 ответа

521 Репутация автора

Я новичок в создании мастеров для приложения Windows Forms в C # .Net. Так что я не имею ни малейшего представления о создании волшебников. Пожалуйста, дайте мне несколько идей о создании Мастера.

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

Автор: Ravi Источник Размещён: 26.02.2010 09:29

Ответы (3)


1 плюс

7094 Репутация автора

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

Автор: Jojo Sardez Размещён: 26.02.2010 09:41

133 плюса

820260 Репутация автора

Много способов сделать это. Создание формы для каждого шага мастера возможно, но очень неудобно. И ужасно, много мерцания, когда пользователь меняет шаг. Делая каждый шаг, который может работать UserControl, вы просто переключаете их в коллекцию Controls формы. Или сделайте один из них Visible = true для каждого шага. Дизайн UC имеет тенденцию становиться запутанным, хотя вы должны добавить открытые свойства для каждого элемента пользовательского интерфейса.

Самый простой и быстрый способ - использовать TabControl. Очень хорошо работает в дизайнере, поскольку позволяет переключать вкладки во время разработки и удалять элементы управления на каждой вкладке. Переключение шагов тривиально, просто измените свойство SelectedIndex. Единственное, что нетривиально - это скрывать вкладки во время выполнения. Все еще легко сделать, обработав сообщение Windows. Добавьте новый класс в форму и вставьте код, показанный ниже. Compile. Перетащите новый элемент управления из верхней части панели инструментов на форму.

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);
  }
}
Автор: Hans Passant Размещён: 26.02.2010 02:40

29 плюса

506 Репутация автора

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);
    }
}
Автор: Cluster Размещён: 28.06.2012 02:13
Вопросы из категории :
32x32