当前位置:首页 > Windows程序 > 正文

Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架

2021-05-24 Windows程序

最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包。比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个.NET的向导开发框架了,它叫Microsoft Visual Studio 2013 Wizard Framework。我并没有对其进行深入研究,单从名称上看,该框架是否只能在Visual Studio 2013下使用?上网搜索过,也没发现微软有比较详细的官方资料介绍这个框架。不过无论如何,我还是在此向大家介绍一下我自己开发的这个向导框架,也算是让大家了解一下我的设计思路,,以及使大家能够方便地从该框架获益,快捷地在自己的项目中也用上这个向导框架。

有图有真相

话不多说,请先看效果图。为了演示这个框架,我依赖它开发了一个模拟软件安装过程的向导程序。用过类似Install Shield的安装程序的用户,应该对下面的这些对话框比较熟悉吧:

技术分享

技术分享

技术分享

怎么样?看上去还算专业吧?它就是用Wizard Framework开发的。1.0.0版本支持以下功能:

向导对话框可以定制,比如可以自定义对话框的尺寸、Icon、是否支持在线帮助等等

由Windows Forms设计器支持的向导页面设计,开发人员可以像开发一个用户控件一样,直接在Visual Studio中使用拖拽的方式,设计每个页面的界面

每个页面都可以通过CanGoPreviousPage、CanGoNextPage、CanGoFinishPage以及CanGoCancel四个属性,直接设置向导对话框中“上一步”、“下一步”、“完成”和“取消”按钮的状态

每个页面都可以读取其它任何页面所保存的向导模型(WizardModel),通过向导模型获取各个页面的设置参数(比如上面“安装信息汇总”页面中就读取了“软件功能选择”页面的数据并显示出来)

每个页面都可以直接设定其它页面是否在上一步或者下一步可见,比如,在有些情况下,当当前页的某个参数被设置后,我们希望在点“下一步”的时候,能够跳过下一页,而直接进入下下页

每个页面都可以设置自己的Logo

对C# 5.0中async/await的支持,使得面向向导的异步开发模型变得异常简单

支持中文和英文

那么,我该如何获得源代码或者开发包呢?

源代码与NuGet安装包

你可以直接访问Wizard Framework的主页:https://github.com/daxnet/wizard-framework。如果你装有Git客户端的话,可以将本项目克隆到本地:

git clone https://github.com/daxnet/wizard-framework

等克隆结束后,直接在Visual Studio 2013中打开WizardFramework.sln即可(目前Wizard Framework基于.NET Framework 4.5.1开发,所以建议还是用Visual Studio 2013打开)。此时,你可以看到该解决方案包含两个项目:

技术分享

WizardFramework项目就是该框架的源代码,而InstallerSample是一个Windows Forms应用程序,它使用了WizardFramework开发了一个模拟软件安装过程的向导界面,也就是上面你所看到的界面效果了。你可以修改Program.cs中Main函数的第一条语句,将本地化信息设置为zh-CN或者en-US,来体验该模拟程序在不同区域语言下的界面效果。

如果你希望在自己的Windows Forms项目中使用Wizard Framework,你可以在项目上单击鼠标右键,选择Manage NuGet Packages菜单项,在弹出的对话框中搜索WizardFramework关键字即可:

技术分享

选中之后,单击“安装”按钮,即可将本向导开发框架添加到你的项目中(注意:建议应用程序是基于.NET Framework 4.5.1开发的)。

使用方法

通过NuGet Package Manager添加了Wizard Framework的引用之后,就可以开始开发向导应用了。基本上可以分三个步骤:开发向导页、开发向导对话框,以及将向导页添加到向导对话框。

开发向导页

要开发一个向导页,只需在Visual Studio的Windows Forms项目上,添加一个用户控件(UserControl),然后使其继承于WizardFramework.WizardPage类即可。此时,Visual Studio编辑器会提示构造函数错误,因为WizardPage类型没有可访问的默认构造函数,这就需要通过自定义的向导页类的构造函数向基类传入参数。以下是WizardPage构造函数的重载,以及各重载构造函数的参数描述。

WizardPage(string title, string description, Wizard wizard, IWizardModel model = null)

title:用于显示在每个向导页上方黑体标题部分的标题信息

description:用于显示在每个向导页上方的向导页描述信息

wizard:当前向导页所在的向导对象,一般通过向导页的构造函数参数传入

model:当前向导页所使用的数据对象模型

WizardPage(string title, string description, Wizard wizard, WizardPageType type)

title:用于显示在每个向导页上方黑体标题部分的标题信息

description:用于显示在每个向导页上方的向导页描述信息

wizard:当前向导页所在的向导对象,一般通过向导页的构造函数参数传入

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70311.html