C# Wizard功能实现

原地址:http://www.codeguru.com/csharp/csharp/cs_controls/wizards/article.php/c4799/A-Reusable-Wizard-Component.htm


工作中需要用到Wizard,找了一圈发现.NET居然没有提供现成的方便的实现,在找到的资料里,这篇文档提供的方案相对来说是可靠且使用简单

目标
1、以类似MFC的方式创建Wizard
2、用类似设计对话框的方式设计每一页

这篇文章提供了两个类用于创建Wizard,另外有两个类用于创建Wizard97风格

主要的类
WizardForm和WizardPage类似CPropertySheet和CPropertyPage

WizardForm
WizardForm派生自Form,它负责管理WizardPage集合。另外,它提供了缺省的Wizard界面。它的主要方法如下:

public void SetFinishText( string )设置Finish按钮的文字
public void SetWizardButtons( WizardButtons )启用或者禁用向导按钮

创建你自己的向导类的第一件事就是扩展这个类,通常从该类继承,编辑属性或者添加额外的按钮。

WizardPage
WizardPage派生自UserControl。提供了向导相关的方法,如 OnSetActive, OnWizardNext等。它的主要方法如下:
protected WizardForm Wizard { get; }  获得当前页所属的 WizardForm
protected internal virtual bool OnKillActive() 该函数在当前页失去焦点时被调用,可以在此处做数据校验
protected internal virtual bool OnSetActive()  该函数在当前页获得焦点时被调用
protected internal virtual string OnWizardBack() 当点击Back按钮时被调用。Return WizardForm.DefaultPage to advance to the previous page, WizardForm.NoPageChange to prevent the page from changing, or the value of the Name property of the page to be displayed.
protected internal virtual string OnWizardNext()当Next按钮被点击时调用。Return WizardForm.DefaultPage to advance to the next page, WizardForm.NoPageChange to prevent the page from changing, or the value of the Name property of the page to be displayed.
protected internal virtual bool OnWizardFinish() 当Finish按钮被点击时调用。如果返回true则关闭向导,反之阻止关闭

 一旦你对 WizardForm 的定制完成,你可以创建一个或多个 WizardPage 的派生类。为了把这些page和wizard关联,把这些page加入相应WizardForm的Controls collection。


使用WizardForm 和 WizardPage
1、创建派生自WizardPage的类
2、创建派生自WiazardForm的类
3、添加Page,如下

Controls.AddRange( new Control[] {
		        new FirstPage(),
		        new SecondPage(),
		        new ThirdPage(),
		        new FourthPage()
		        } );


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值