在WinForm中用Command模式实现可以销的数据操作.docx

在WinForm中用Command模式实现可以销的数据操作.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在WinForm中用Command模式实现可以销的数据操作

“你们开发的系统如果能够像Excel那 样支持全选、反选、多选、撤销、导入、导出等命令;不要每次增加一条记录都必须按一下‘新增’,完了以后再按一下‘保存’,取而代之的是我想保存的时候一 按‘保存’,就把我前面所有的操作全都保存,如果我的操作有误,可以撤销刚刚所做的操作。那真是爽死了。”很多的用户这样感慨。用户体验非常重要,很多的 时候,如果用户觉得你的系统不方便,他就会拒绝使用。这样,系统也就没有什么意义了。如果在给客户做演示的时候,能够充分展现你系统在易用性方面的优势, 那么中标几率就会大大的增加。用DataTable、DataGridView和Command设计模式完全可以前面用户所提到的功能。我们先分析一下,用户所提到的功能,实际上就是希望能够对界面层表示的数据方便的发出各种命令,这些命令可以通过一个个的按钮提供给用户调用。如果我们用DataTable来容纳业务数据,用DataGridView来表示这些数据,那么对“全选、反选、多选”等,就是针对DataGridView来说的,而对于“撤销、导入、批量保存”等则是对业务数据来说的,而DataTable则支持这些操作。下面是DataTable、DataRow、DataGridView、按钮和数据操作命令之间的关系简图。可以看出,数据操作命令就是Command模式中的Command,而按钮就是Invoker,而DataTable和DataGridView则是Receiver,在WinForm中,实际上我们主要是通过BindingSource来操作DataTable,所以对于DataTable这个间接的Receiver来说,其直接Receiver就是一个BindingSource。但是,不管是DataTable还是BindingSource都不能全部符合我们的要求,所以我们必须自己实现一个符合我们要求的Receiver,假设我们叫他DataCommandReceiverBase,为了能够进行可是化设计,我们让他继承自Component,其原型如下:??? publicabstractclassDataCommandReceiverBase:Component??? {??????? publicabstractvoid New();??????? publicabstractvoid Delete();??????? publicabstractvoid UnDo();??????? publicabstractvoid Save();}?? 对于“新增、删除、保存、撤销”等命令,我们把它们抽象为一个公共的类,叫做DataCommand,其原型如下:?? ?publicabstractclassDataCommand : Component??? {??????? publicabstractvoid Do();??????? DataCommandReceiverBase _Receiver;??????? publicDataCommandReceiverBase Receiver??????? {??????????? get { return _Receiver; }??????????? set { _Receiver = value; }??????? }}然后,我们对每一个基本的操作,比如“新增”建立一个对应的DataCommand的子类,并重写Do函数,在该函数中调用Receiver相应的功能。如下所示:??? publicclassNewCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.New();??????? }??? }???? publicclassDeleteCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.Delete();????????? ??????? }??? }???? publicclassSaveCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.Save();????? ??????? }??????? ??? }???? publicclassUndoCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.UnDo(); ???

文档评论(0)

linjuanrong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档