36

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

问候,拉维

4

3 回答 3

138

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

简单而 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);
  }
}
于 2010-02-26T14:40:04.677 回答
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);
    }
}
于 2012-06-28T14:13:52.353 回答
1

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

于 2010-02-26T09:41:58.737 回答