12
返回列表 发新帖
楼主: hphubei

【转】为 Microsoft .NET Framework 精简版创建多窗体应用程序框架

[复制链接]
论坛徽章:
8
11#
 楼主| 发表于 2007-1-15 14:34 | 只看该作者
继承 StackForm 类
最后需要考虑的是如何真正实现 StackForm。由于 StackForm 是一个抽象类,因此无法将其实例化。而必须在自行派生的类中继承 StackForm。继承性是面向对象编程的优点之一,可以变得非常复杂,因此我假设您已经完全理解它,只介绍从 StackForm 中继承时需要牢记的特殊事项。

首先,构造函数必须调用 StackForm 基本构造函数。这是因为基本构造函数围绕 Closing 事件。

接下来,默认构造函数调用 InitializeComponent。在我们的实现中,FormStack 调用 InitializeComponent,因此我们不希望构造函数真正调用它,但是由于我们确实希望设计者能够呈现窗体,因此需要在此处进行调用。.NET Framework 精简版的一大优点是具有一个编译器指令,允许我们按照以下方法排除调用:

#if NETCFDESIGNTIME
  InitializeComponent();
#endif
最后,我们还可以选择实现 DataThread 和 Populate 方法(如果需要)。

同样,DataThread 在单独的线程中执行,并应该用于提取数据。请记住,在 DataThread 完成其工作之前,StackForm 不会被完全压入和显示,因此不要执行可能中断执行的任务(例如调用 Sleep)。如果选择实现 DataThread,则需要做的最后一件事(并且必须实现以发出线程完成信号)是调用 base.DataThread。

最后,InitializeComponent 和 DataThread 方法完成后,将调用 Populate,以便在 StackForm 可见之前有机会填充列表、下拉列表或其他控件。

请记住,由于这些 StackForms 已被缓存,因此 DataThread 和 Populate 只在 StackForm 加载到缓存时被调用,而不是每次显示时都调用。

小结
正如我在本文开头提到的,在开发较为复杂的应用程序时,您将发现 FormStack 缺少一些功能,例如根据显示内容刷新数据的功能。请记住,堆栈变量本身不仅易于保存窗体类型,而且可以保存数据库中的实体 ID 值并允许快速重写窗体。

编程的优点是随时可以添加其他功能,但应始终记住智能设备编程与桌面应用程序编程有着本质上的区别。设备资源通常都很有限,处理器的速度也往往慢很多,因此,作为应用程序编程人员,要想开发成功的应用程序,必须记住以上两点。FormStack 这个工具可以帮助开发人员尽量减少对应用程序资源的影响,同时可以管理 GUI 引擎的复杂功能,这样可以通过缓存快速更改窗体并通过堆栈轻松导航。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表