摘要: 这一篇其实没什么可讲的,只提一下跟客户端不太一样的一些地方。服务端跟客户端最大的区别是它面对的不是单单一个连接,而是有一些个连接。对于接收与发送来讲它是要具体到accept进来的每一个连接的,所以这里有一个SocketStateObject参数会贯穿始终,这个参数主要就是放对应客户端的Socket连接及一些状态变量,在accept进来一个连接后即创建一个这个对象。 public void List...
阅读全文
摘要: 数据窗体的状态大概可以概括为以下几种,即初始、浏览、新增、修改、删除、查询(单数据窗体的查询是一种简单地基于当前表的查询,各个条件之间只能“与”运算,关系运算只有“等于”,当然字符串字段会有“like”)。在各种状态下,窗体的UI呈现是不相同的,而且在不同状态下,一些按钮的动作是各异的。比如“确定”按钮,在新增状态下按“确定”和在查询状态下按“确定”明显是不同的二种动作。上述的这些情况可以用GoF...
阅读全文
摘要: 所谓的单数据窗体是指那种在窗体只显示一张单表的数据的窗体,主要就是用于显示基本表,因为这个系统要显示的差不多就是基本表为主,这一篇主要讲这个数据显示窗体的基类。既然是基类嘛,当然要提供一些虚方法给子类来改写,要有一些变量必须由子量来初始化。首先必须由子量来提供实例的变量主要是跟子类关联的数据表有关,因为窗体的始化及UI的呈现都是与数据有关的,所以上述变量的初始化必须是在构造函数的最开始的地方进行。...
阅读全文
摘要: 经过上二篇的铺垫,现在终于可以加载菜单与工具栏了。先来看一下IService的接口实现里LoadCommand方法是如何来加载菜单与工具栏的:IService接口的实现Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclassSignInR...
阅读全文
摘要: 经过上一篇定义的两个接口,菜单与工具栏基本上符合了Command模式的样子,接下来应该可以在系统中加载了。但理论上照着模式是一回事,实实在在的写代码又是另一回事。我们很遗憾地发现ToolBarButton这个类根本没有单击事件,甚至跟UI有关的事件都没有一个,因为它根本就不是从Control继承的,而是从Component继承的。工具栏按钮单击是从工具栏ToolBar的ButtonClick事件来...
阅读全文
摘要: 从这一篇开始要讲管控端是如何来加载菜单与工具栏的了,.Net Framework自带的菜单与工具栏用来做一个简单的小程序是大大胜任的。但用它们来实现一个可以称之为系统的东西则不够强大,变化多端的环境转瞬间就使它们的功能是捉襟见肘了,这里我们必须先要对它们做出一定的改造。菜单与工具栏只是UI的二种不同表现,二者在系统的动作执行上是没有什么不同的。由此说起二者的系统集成,一般都会提到Command这个...
阅读全文
摘要: 本要接上一篇开始讲管控端程序的菜单与工具栏的加载,但发现还是先要讲一下整个管控端的窗体组织,否则会无法理解菜单事件为何要那么写。多窗体组织很经典的模型就是MDI了,但MDI在窗体最大化、最小化、还原一些动作之后,窗体会乱掉,很乱七八糟。现在的程序很少有用那种原始的MDI来作界面的了,至少我不会去用,实在是难看。但开发工具在这里也是没有长进,如果我们直接用IDE只能生成那种原始的MDI窗体。只能另想...
阅读全文