在C#中为Windows窗体创建向导

Rav*_*avi 32 c# wizard winforms

我是C#.Net中为Windows窗体应用程序创建向导的新手.所以我对创建向导没有任何想法.请给我一些关于创建多个向导的想法.

此致,拉维

Han*_*ant 133

有很多方法可以做到这一点.为每个向导步骤创建表单是可能的,但非常尴尬.当用户改变步骤时,丑陋,大量闪烁.使UserControl的每一步都可以工作,只需将它们切换到表单的Controls集合中即可.或者为每个步骤使其中一个Visible = true.但是,UC设计往往会变得复杂,您必须为每个UI项添加公共属性.

easy和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);
  }
}
Run Code Online (Sandbox Code Playgroud)

  • +51:所以现在你可以使用一个标签控件,隐藏标签......并在选项卡页面之间切换标签索引...... ??? 我将使用它......比管理重叠面板好得多. (5认同)
  • @The souloution for tab只是将`TabStop`设置为false (5认同)

Clu*_*ter 29

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Joj*_*dez 1

您需要创建自己的以满足您自己的喜好。提示您创建一个名为“frmWizard”的基本表单,然后您的所有向导窗口都将从它继承。您应该将公共对象或向导对象放在基类上,并根据需要在派生类上修改\覆盖它们。