如同婴儿的降生,WinForm程序有一个起点,那就是它的Main函数;如同一个青年的成长和一次次成功,一个窗体中可以一次次的完成各种任务;如同人类的生生不息,一个WinForm窗体可以孕育一个新的窗体;如同老人的逝去,WinForm在经历完我们的操作,退出最后一个窗体。应用程序有其完整的生命周期。我们都已经知道WinForm是一个表现,而非全部,它负责显示我们要求其显示的数据,所以不要对它有过分的期望。真正的数据完全有你自己来控制。

喜欢WinForm不是因为简单的拖拉控件,而是因为所有的控件都是对象,你可以对其进行轻松的扩展,修改它的功能。一个WinForm程序被启动之后,从Main里,你可以看到首先会运行一个窗体,从这个时刻开始,你在创建一个对象生存的乐园,也许你根本不清楚,窗体本身就是一个对象它首先被创建了,这个对象是一个可以包含其他对象的容器,就像我们看到的——在一个窗体上有我们的各种按钮Button、图片框PictureBox、文本框等,这些控件都像一个个小生命一样,随着我们窗体的诞生,而在InitializeComponent(在窗体的构造函数中得以调用)函数中得以创建,如果你不关闭窗体,或者不有意的判处它们“死刑”,那它们就快乐的生存着,在程序开发阶段,这些小家伙的造物主——程序员,已经告诉它们各自的职责。它们知道如何去接收窗体发布的命令(接收事件命令),也知道如何把自己表现出来(都有Draw方法),也会向其他兄弟们发送一条命令(触发事件),每一个小家伙都在尽职的勤劳的工作着,它们相互合作来负责将数据显示给用户,它们也非常乐意接受用户的输入,再把这些输入的数据交给处理者,因为有了它们数据才不会那么的枯燥乏味,也因为有了它们合理的的组织和协调而使用户的操作更加的简单和方便,它们是化腐朽为神奇的对象。

当然,并不是每一个对象都如此的幸运,能够长寿到和窗体一样,在很多时候它们可能只是昙花一现,每个对象的位置决定了它的寿命,在某一个方法里定义的对象,它的生命周期注定非常的短(只能生存到方法大括号),而在一个类里定义的对象,自然意味着寿命的上限等同于我们的对象。窗体也是一个类,你可以在其中定义一个成员,也可能是在类的某一个方法里定义一个成员(我们更多的称之为局部变量),类是无法运行的,能运行着的往往是依据类(模板)创建的很多对象构成的整个应用程序。       那么我就想问你一个问题:“假如我在窗体类中定义一个数组(也许你不喜欢将之称之为集合),是不是就意味着,只要这个窗体的对象生存着,这个数组就生存着?”

当然是这样,所以你可以借助一个放在窗体上的数组来保存你的数据。

那些我们称之为窗体和控件的小家伙们不会去做它们职权之外的工作,你必须提供数据来让它们显示。对了,我们需要一个“数据管理者”,由它来负责数据的提供和在数据修改之后,将数据保存回去。你也许从现在开始明白为什么教材上的代码里,总有一些管理者的类了。但同上,要维持我们的数据管理者对象的生存期,你可以让他生存的很短,例如从DB中取得数据,显示到你的MYQQ上,只需要在方法里取得数据,你也可以让他和窗体一样长寿,只需要在窗体类里来定义这个“数据管理者”对象,然后窗体就可以安心的负责显示,当它需要数据时,就向“数据管理者”要,当它需要将用户修改过的数据保存起来,就去操作这个数据管理者。

一个窗体本身会有许多事件,这些事件正像人的一生有出生,过生日,结婚,孕育生命,开创事业,老去,回归大地一样,而事件的处理程序(例如你双击一个按钮就会为你创建一个事件的处理方法)就像你人生的某一个事件发生时,你以及亲人所进行的活动。这些事件有可能在窗体的整个生命周期只出现一次(例如:Init,Load,Closed),而有的可以执行很多次,所以就如同不要轻易浪费自己的青春一样,在事件发生时,你要抓住时机,完成任务。
--------------------- 
作者:wangjingqing123 
来源:CSDN 
原文:https://blog.csdn.net/wangjingqing123/article/details/5450280 
版权声明:本文为博主原创文章,转载请附上博文链接!

一个WinForm程序的生与死相关推荐

  1. WinForm程序界面假死,寻求完美解决方案

    WinForm程序界面假死,寻求完美解决方案 参考文章: (1)WinForm程序界面假死,寻求完美解决方案 (2)https://www.cnblogs.com/funying/p/3230873. ...

  2. Windows编程 Windows程序的生与死(下)

    再谈程序之"死" 记得在第二回中我对程序的"死"只是一句话带过,因为我还没有铺垫好,好了现在我们可以详细的分析一下这个过程了. 这还要从while消息循环说起, ...

  3. Windows编程 第四回 Windows程序的生与死(下)

    致歉 很抱歉,读者看到的这篇文章将是我写的最没什么条理的一篇了,由于这一块儿内容是所有Windows程序的核心与基础,所以我分了三回来写.我想讲 得既易懂有又丰富,无奈本人才疏学浅,每每一提笔就要查很 ...

  4. Windows程序的生与死

    Windows程序分为"程序代码"和"UI资源"两大部分最后以RC编译器整合为一个完整的EXE档案. "以消息为基础,以事件驱动(message ba ...

  5. Windows 程序的生与死----FROM 侯俊杰

    个人感觉比孙鑫讲的要简单,孙鑫讲的有点多了,理解不如候俊杰讲的~~~ 1. 程序初始化过程中调用CreateWindow,为程序建立了一个窗口,做为程序的萤幕舞台.CreateWindow 产生窗口之 ...

  6. winform程序内存不足或假死的问题

    最近一直在写一个winform程序,对各类文档文件,以及压缩包的内容进行关键字检测. 模型出来之后,执行了一下,发现连续测试后,会有内存不足的问题,导致程序面假死.脑袋懵逼了两天. 回头看我的变量容器 ...

  7. Windows程序的窗口和消息 -- 一个Windows程序从生到死

    注:以下内容为学习笔记,多数是从书本.资料中得来,只为加深印象,及日后参考.然而本人表达能力较差,写的不好.因非翻译.非转载,只好选原创,但多数乃摘抄,实为惭愧.但若能帮助一二访客,幸甚! 1.一个完 ...

  8. 一个例子说明VS2010 winform程序打包、发布教程

    1.为了举个例子,先创建一个winform程序 2.窗体长这样 3.鼠标移到'解决方案 winform程序打包教程'这个项目,右键->添加->新建项目 出现下面界面 4.选择 其他项目类型 ...

  9. 使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

  10. vs winform常用函数_使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

最新文章

  1. php 指定表格字体大小_PHPExcel根据单元格值设置字体/背景颜色
  2. 进程与线程的区别联系
  3. 2016-09-09
  4. 将公用文件夹从Exchange2010迁移到 Exchange 2013
  5. docker环境下指定jvm参数
  6. springboot+swagger传递参数的几种格式
  7. BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块
  8. leetcode 最长回文子串
  9. java动态数组的实现的_基于Java的动态数组分析与实现
  10. WebSocket 实现链接 群聊(low low low 版本)
  11. 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。
  12. CSDN账号 账号设置
  13. 了解单反相机的自动对焦点
  14. word有空白段删不掉 解决办法
  15. vue对vue-giant-tree进行节点操作
  16. 【防火墙_策略路由】
  17. 这就是数学的魅力?QWQ
  18. 从微信跳转第三方app:在微信打开h5页面后,点击触发跳转自己app指定页面
  19. 从感性和理性的角度谈APS系统
  20. git分支合并、撤销;git修改已push的commit信息; git 撤销操作;

热门文章

  1. 学信网-账号被注销解决方法
  2. Drillbeach---第三章 Drillbench Hydraulics User Guide
  3. linux虚拟磁盘服务,hintsoft Linux iscsi虚拟磁盘完全教程及优化攻略
  4. LED背光源和LED背光灯区别
  5. dnf单机版 不显示服务器,dnf单机云服务器
  6. 羊年祝福语(羊年祝福大全)
  7. Arduino与Proteus仿真实例-74HC573锁存器驱动仿真
  8. 七脉轮位置_十分钟告诉你七个脉轮的全部,从未如此简单
  9. python中abs函数是什么意思_实例讲解Python3中abs()函数
  10. 论文阅读:Enhanced Pix2pix Dehazing Network