【转】WinForm 程序的运行框架与启动流程简介(图文)

WinForm 程序的运行框架与启动流程简介(图文)

image 

  1. 第一个方块:
    加载 Winform 的进程,这里加载的并不是你所创建的应用程序,而是 .net 框架已经创建好的系统进程.启动 Winform 时,加载 Winform 的进程,启动 Asp.NET 时,加载 IIS 的进程,各应用程序是不同的.
  2. 第二个方块:
    在 CLR 挑选好了要加载 Mscoree.dll 还是 Mscorsvr.dll 以后,就要加载 MScorlib.dll 和你所编译好的 Winform 的EXE,然后交给 JIT 去编译成当前平台可以使用的机器码.
  3. 第三个方块:
    编译好机器码以后,就可以执行指令了,这里会创建 Systemdomain,它包含了 SharedDomain 和默认的应用程序域,也就是当前应用程序自己的域,前面我们说过一个 .net 进程中可以包含多个默认的应用程序域,而这些应用程序域都会用到 mscorlib.dll,如果每个默认的应用程序域中都去加载它,那么无疑会造成内存的浪费,所以就有了 SharedDomain,它是用来放所有 Domain 都要用到的 Dll,这样就避免了浪费内存.也优化了加载的速度.
  4. 第四个方块:
    这时候默认的应用程序域,就会去找到你应用程序的入口 Main 方法,并且执行它,创建第一个被 Main 中初始化的窗体(Form).

 

Winform 程序中的主要类及其层次关系
image 

  1. Control 类:
    是其他控件的基类.它提供了控件的基本功能,像大小, 可视等. Button,TextBox 等都派生于它.
  2. ScrollableControl 类:
    继承了 Control 类并且添加了自动滚动能力给所有需要滚动条的控件.
  3. CommonDialog 类:
    是所有公共对话框的基类.比如 OpenFileDialog,PrintDialog.
  4. ContainerControl 类:
    继承自 ScrollableControl 并且添加了标志和焦点管理功能去放置其他控件.
  5. Form 类:
    继承了 ContainerControl 并且描述了所有显示在应用程序中的窗口. Form 类提供的属性和方法允许你显示不同类型的 forms, 包含对话框和多文档界面 (MDI) forms.所有 Windows Forms 都派生自这个类,因为它提供了 forms 所需要的基本功能.
  6. UserControl 类:
    继承自ContainerControl 类并且提供了空的控件让你可以使用 Windows Forms Designer 用来创建你自己的控件.
  7. Application 类:
    封装了 Winform 程序运行时的各种操作.

 

在这里,MS 用到了一种设计模式,在做应用程序界面时经常用到 -- Composite(组合)模式

clip_image002[5]

  1. 模式的意图:
    将对象组合成树形结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。
  2. 模式使用场景:

    · 想表示对象的部分-整体层次结构。

    · 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

    上述类层次中 Component 和设计模式图中 Component 一样,定义一些公用方法,ContainerControl 就是设计模式图中 Composite,它维护一个继承自 Component 的列表,可以放入 Leaf 或 Composite.  Leaf 不继承 ContainerControl,但继承 Component 类.这样就形成一种树型关系,我们知道一个 Form 可包含多个 Pannel,而每个 Pannel 又可包含多个其他控件,甚至还可包含 Pannel.我们不需去管这个 Form 里到底有什么,只要用 FindControl 就可以找到目标控件,这和上面的适用性"希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象"相匹配. 使我们的应用更加的方便,也更有利于控件的组合.

 

原文链接:http://www.cnblogs.com/SkySoot/archive/2011/11/25/2263405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值