控件使用经验-MVP模式+控件封装.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
控件使用经验-MVP模式控件封装

控件使用经验-MVP 模式+控件封装 项目背景 几年前参与了一个面向学校的人事管理软件的开发,基于WinForm 平台。今天主要想谈 一谈其中关于控件的使用经验。这个项目我们大量使用了第三方控件。由于这个产品的生命周 期很长,我们在设计时要考虑表现层可能会有不同的形式,比如现在是WinForm 以后可能会 是WPF 或者Web。另外也要考虑控件版本升级对产品的影响降到最低。 设计 基于上面的想法,我们通过两点来解决这些问题。MVP 模式+控件封装,可以开发出更具 弹性的View 层。它能更有效的应对UI 变化,包括控件升级这种小的UI 变化,甚至是平台迁 移等这种大的UI 变化。 MVP (Model-View-Presenter)模式主要是为了表现层解耦,如果表现层的职责不单 一,那么有控件升级或者UI 层使用新的平台时花费的成本就会很高。使用MVC 之后只有 View 层和控件相关,Presenter 层实现UI 逻辑。当View 层变化时(控件升级或者新的UI 形式),Presenter 层、Model 层都会被重用。 控件封装可以以一种统一的方式使用控件。所有使用到的控件全部封装即使是.Net 控件也 进行封装,不允许使用任何原生控件,只能使用封装后的控件。我们对控件的进行深度封装, 将很多功能在控件中实现。 控件封装经验 我们以表格功能为例来介绍我们如何进行控件封装。在我们项目中对表格功能的要求非常 高,一方面功能要非常强大,而且具有很强的定制开发能力,另一方面要求表格控件具有良好 的性能。下面通过几个UI 了解我们对表格的要求。 图1 图2 图3 图1 和图2 展示的是职员一览画面中,我们不仅仅加载出了职员信息,而且加载了职员的 照片,需要一次性从数据库中加载几千张职员照片,对表格的性能要求很高。 图3 展示以时间轴方式显示的职员状态。点击放大、缩小按钮,时间刻度的粒度也会发生 变化,并重新刷新数据。 通过以上的两个示例可以看出我们对表格的性能和扩展性要求很高。我们综合对比了 Spread,FlexGrid,MutilRow 这几种表格控件,最终我们选择了葡萄城公司的Component 产品中的FlexGrid 控件。 FlexGrid 控件封装 图4 图4 是我们基于FlexGrid 进行了深度封装的类图。在项目中不允许直接使用FlexGrid, 只能使用我们封装后的JijiEditGrid 等控件。我们以JijiBaseGrid 为例来看看我们是如何进行 封装。 下面节选了我们JijBaseGrid 中的一些功能。 功能 描述 处理 Option 机制 记忆列宽、字段顺序等 方法:LoadOption、SaveOption 列头菜单 字段显示/隐藏 属性:NeedHeaderMenu (设计时不可用) 统一管理颜色 Grid 的配色是否随着Form 走 属性:IsColorManaged (设计时可用) 接口:IColorControl 拷贝到剪贴板 根据Option 进行特殊处理, 方法:CopyGridRangeToClip(RealText realTex 分隔符、日期格式等 t) 事件:public event EventHandler DataCopy = delegate { }; 特殊键 F9:自动调整列宽 事件处理函数:override void OnKeyDown Ctrl+A:全选 Ctrl+C:复制 Dele

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档