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

问题描述 投票:34回答:3

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

问候,ravi

c# winforms wizard
3个回答
134
投票

很多方法。可以为每个向导步骤创建一个表单,但是很麻烦。而且丑陋的是,当用户更改步骤时,很多闪烁。使UserControl可以工作的每个步骤,您只需将其切换到窗体的Controls集合中或从窗体的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);
  }
}

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

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.