随笔背景:在不少时候,不少入门不久的朋友都会问我:我是从其余语言转到C#开发的,有没有一些基础性的资料给咱们学习学习呢,你的框架感受一下太大了,但愿有个按部就班的教程或者视频来学习就行了。html
其实也许咱们天天面对的太多东西了,以为不少都稀松日常了,即便很细微的地方,可能咱们都已经造成习惯了。反过来,若是咱们切换到其余领域,如IOS、android,那么开始咱们可能对里面不少设计的规则不甚了解,开始可能也是一头雾水。android
本篇继续上一篇《按部就班开发WinForm项目(2)--项目代码的分析》,继续介绍如何按部就班开发Winform项目,继续介绍Winform界面层的项目设计以及相关代码的组成部分,使得咱们逐渐了解一个完整的开发方案过程。数据库
咱们从前面两篇随笔的介绍中,能够大概了解到界面层如下所发生的事情,本篇继续这一趋势,介绍界面层的开发内容。框架
首先咱们建立一个Windows Application项目,使用VS2010(其余版本也能够)建立的Windows应用程序项目,而后把它们的项目目标框架和输出类型修改一下,以下所示。工具
而后删除自动生成的全部窗体和类库代码,界面最后成为以下的内容。布局
这样作的本意,是把这个界面部分做为一个独立的模块,咱们在启动程序框架里面就能够很方便把它包含进来使用,由于咱们知道,咱们每次开发的业务可能都只是属于一个大的项目中的某部分模块,按模块的划分来进行开发,有方便管理维护、方便整合使用等特色。post
最终在主体界面中整合的是一个个模块,每一个模块里面又有不一样的窗体界面可供使用,大概的界面模块组合图形以下所示。学习
从第一小节中能够搭建一个干净的界面项目模块,可是里面尚未任何的内容,这就须要咱们进一步生成或者手工编写咱们所需的界面内容了。url
为了加快效率,减小界面控件名称的琐碎设置,减小对象赋值的代码编写,咱们通常建议采用工具来进行界面的生成,以下界面所示。spa
使用代码生成工具生成的界面,命名和数据库字段名称对应,统一风格,减小出错的概率,提升开发效率。
经过以上设置的界面,设置咱们在列表界面里面的查询条件内容,以及须要显示的字段内容;和编辑、新增对象界面的数据内容,而后咱们就能够生成相关的窗体界面了。
单击“Windows界面代码生成”后,生成的窗体界面文件以下所示,分为了两个部分,一个是列表界面,一个是数据编辑界面,经过手工的作法,咱们也建议把新增、编辑数据这样合并处理,这样能够减小大项目模块的代码文件。
把相关的界面内容复制到刚才建立的空项目工程上,并添加相关的类库应用,如框架须要支持的界面基类,公用类库等必备的程序集,这也是咱们常见的开发操做了,再次不在赘述。
最后界面层的项目截图以下所示。
通常来讲,自动生成的界面,可能或多或少须要进行手工的一些处理,如可能一些类库没有添加应用,关联的项目没有添加进来等缘由,或者是数据类型转换的问题,不过通常问题很小,稍微处理下就能解决的。
下面咱们来对自动生成的窗体界面进行必定的调整,以方便咱们的数据显示和处理。
自动建立的列表界面打开以下所示。
粗看咱们应该以为仍是挺标准的列表界面,可是为了更好看,更统一,咱们仍是须要进行一些微调,如因为年龄是数值型,这里查询条件有两个做为一个区间进行组合查询的;另外,每一个查询条件的控件宽度默认是会自动缩放的,因为条件较少,咱们仍是把它设置为固定宽度较好,最终咱们稍微美化调整后的窗体界面以下所示。
搞定列表界面,下面咱们再来看看数据的编辑界面部分,数据编辑界面生成的效果以下所示(因为版面的缘由,我把它进行了必定的缩小)。
咱们看到,里面的字段说明,控件的名称等内容,都已经合理安排好了,基本上设计数据库的时候,指定的字段备注就能正确生成出来了。
这里演示的表字段比较少,所以可能排版布局方面没有很好的演示效果,不过咱们知道DevExpress自己的LayoutControl布局很强大,咱们能够随意调整里面控件的位置。
对于控件的类型,也能够进行不一样类型的转换,如能够吧文本类型,转换为数值类型的输入控件等等。
这样简单的界面可能不少读者会说,这个我本身添加几个控件就能够了,也很快的,可是若是对于须要显示的界面控件(数据库字段不少)的状况下,若是控件显示内容、控件名称、布局位置,所有都要手工操做调整,那么这个工做量是很是惊人的。
我在开发本身的一个项目程序《客户关系管理系统》的时候,里面的业务不少表的字段都很多,我就只须要拖动,调整下位置或者增长一些特别的控件进行合理展现便可,不须要去调整太多内容,这样能够为我节省大量的界面开发时间,更重要的是,减小出错的概率。
如对于《客户关系管理系统》客户联系人这个表,字段很多,生成的界面不少控件,默认都是单排的,我根据须要,把他们进行再次排列,并增长一个TabControl选项卡的控件,以便放置更多的内容,和进行必要的区分,详细调整后的界面效果以下所示,这个就是一个复杂界面调整的一个好的案例说明了。
我刚才在设计编译界面层的时候,是在界面项目引用的地方,把业务逻辑层的项目工程包含到引用里面了,以下所示。
这样的引用操做是没什么问题,可是咱们的项目组件若是拆分的较多,每一个界面还须要带着一个业务逻辑的程序集,那么程序集DLL的数量就会翻倍,不便于管理。
个人意思就是把他们所有进行整合,避免文件过于零散,可是最好避免处处复制文件的局面,这样增长维护成本,不是咱们但愿看见的。
基于上面的两种考虑,咱们能够在界面项目里面添加文件“连接”的操做,也就是代码文件的影子,编译的时候,他们是编译整合到程序集里面的,可是咱们维护的时候,它们全部的”连接“引用,都是指向同一个文件,不会形成多处复制的问题。
最终的项目构成以下所示,并顺利能够经过编译,这样咱们在使用这个Customer的业务模块的时候,只须要一个界面部分的程序集(WHC.TestProject.UIDx.DLL)便可。
下一篇咱们继续介绍界面模块如何整合到主体项目工程里面,进行使用等操做。