西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → Management Console 工具管理类软件通用开发框架

Management Console 工具管理类软件通用开发框架

相关软件相关文章发表评论 来源:西西整理时间:2011/8/8 23:03:53字体大小:A-A+

作者:西西点击:109次评论:2次标签: ERP

  • 类型:服务器区大小:41.8M语言:英文 评分:10.0
  • 标签:
立即下载

做ERP/MIS之类的软件,通常会开发一些辅助工具来加速开发,比如代码生成器,数据字典生成工具。随着时间的积累,这类小工具会越来越多,虽然开发的速度会快,方便,但是也会因为找不到,不好查找这些小工具,产生麻烦。原因很简单,已经发了很多精力去做成了工具,自然就不会考虑用很原始的方式来完成任务。

举例说明
对于插件式的开发,我们通常会先做好界面功能,然后把这个功能添加到系统的功能列表中,以启用功能,为完成这个目的,可以采用如下的SQL脚本来完成

INSERT System_Function(Module,Function,Description)

    VALUES(‘Inventory’,'ICMISR’,'Inventory Receipt’)

这样,就把新做好的进仓单功能加到系统功能中,以启用功能。

但情况通常没有这样简单,通常还要设置有哪些用户和角色有权限执行进仓功能,等等。

一种改善的办法,是把这些功能都做成脚本文件,一次调用就完成功能增加,权限分配的任务

如上图,就产生了这么一个小工具. 这是很简化的情况。

我要讲述的主题是,当积累了很长时间,手头有很多这样的小工具,如何把它们整合到一个容器中,方便调用。

先看效果图,边看图边说

 

如图所示,在这里,我集成诸多工具,比如

DataSet Reader 用于读取dataset的工具

Translation  多国语言的翻译工具,
StringBuilder 字符串构造工具,例如,我想把SQL语句
                    SELECT  FunctionCode FROM  dbo.AuditTrail   转化成字符串,以传递到SQL Server中

为了集成进仓单的功能到这个工具中,需要如下处理

修改窗体的继承基类为FormBase,给窗体类添加FunctionCode的特性,这个特性用于反射查找这里的窗体

修改ListItem.xml文件,增加一个Item项,如图所示


内容是

<Item Index="10" Text="InventoryReceipt"  Tag="Inventory Receipt" ImageIndex="35"></Item>

ListItem的内容,就是效果图中,要显示在Task List任务框中的内容,Text是标题,Tag是功能的FunctionCode的值,ImageIndex是图像的索引。

其实,这里还可以做更多的控制。比如,如果没有功能的源代码,需要用反射的方式去call功能所在的程序集,为实现这个目的,还需要增加Item.Assembly以指向它所有的程序集;
如果功能的源代码不是.NET代码所写,要支持Process.Start的方式启动工具,必要时还需要增加参数。

再进入源代码,看看这个工具是如何构造的

MainForm是主窗体,这里采用的是Infragistics2.Win.UltraWinTabbedMdi组件,取代过时的MDI窗体组织形式,

NewProject是Task List任务窗体,这是功能显示的集成项目,Ctrl+N启动这个窗体,ListItem.xml是它的配置项

主窗体中的其他菜单,均没有使用

Startup是启动时显示的主窗体,在这里,可以显示一些常见工具的快捷方式
为了获取和Office 2007一样的蓝色主题效果,可反注释如下的代码

ToolStripManager.Renderer = new WinUI.Misc.Office2007Renderer();
statusStrip.Renderer = new WinUI.Misc.Office2007Renderer();

菜单和状态栏的效果如下图

反射应用于查找窗体的特性,找出它的定义,显示出来,代码框架如下

Assembly assembly = Assembly.GetExecutingAssembly();

object entryForm = Activator.CreateInstance(formBaseType) as Form;

entryForm .MdiParent = this;
entryForm .Show();
entryForm .Activate();
这便是这个工具,最有价值的内容。也达到了开头提出的效果,只开发功能和配置ListItem文件,确实达到插件的目的.


请到epn.codeplex.com上获取最新的源代码,请使用Visual Studio 2008编译。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(2)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)