前段时间做ASP.NET项目,发现里面的Wizard控件挺好用。后来在一个WinForm项目中也想用到类似的控件,却发现WinForm下并没有提供类似控件,上网搜索了一把,也没发现合意的,无奈之下,只有自己动手,丰衣足食!

WinForm 下的 Wizard(向导) 控件, 提供设计时支持!

要达到WebForm下Wizard控件的相似效果,关键的部分设计基本一样,各关键部分如下:

1. enum WizardStepType   //向导的类型
2. class WizardStep      //单步向导
3. class WizardStepCollection    //向导集合
4. class WizardDesigner   //提供设计时支持的向导类
5. class Wizard           //主要的向导类


首先是WizardStepType的定义,这个与WebForm下的基本一样:

WinForm 下的 Wizard(向导) 控件, 提供设计时支持!    public enum WizardStepType
    }



接着是WizardStep的定义,它的关键成员有以下几个:
1)bool AllowNext      //是否允许向导跳到下一步
2) bool isLocked       //向导是否处于锁定状态
3) WizardStepType StepType    //向导类型
4) Cancel,Previous,Next,Finish Button    //向导基本按钮

着重要介绍的是 向导基本按钮的实现:

WinForm 下的 Wizard(向导) 控件, 提供设计时支持!        private void InitStepButtons()
        }

在使用控件的时候,记得要为使用的 基本向导按钮 添加 EventHandler, 否则会提示空引用错误。


WizardStepCollection 就是一个普通的集合类,主要是方便对向导中各个步骤的处理。


Wizard 继承于 UserControl, 比较重要的成员是:
1)int ActivateStep                //当前向导步骤的Index
2)WizardStep ActivateWizardStep   //当前步骤

这两个成员控制了向导步骤的跳转。

WizardDesigner 为 Wizard 提供设计时支持,类似 TabControl 控件一样,具体请看源代码。


以下是使用中的Wizard 控件:

WinForm 下的 Wizard(向导) 控件, 提供设计时支持!





虽然这个控件比较简单,但至少满足了我的需要,希望也能给大家带来帮助!

控件不完美的地方很多,希望大家积极提出批评和建议,小弟虚心接受!


源代码下载:/Files/XiaoFaye/WinForm.Wizard.zip

相关文章: