.NET CF 程序启动和退出的顺序


我们在想关闭一些程序的时候,首先考虑的就是点击程序右上角的'X'或者'ok'来退出程序(有些程序会在Form或者Menu里提供退出程序的方式),但是.NET CF在处理'X''ok'时的做法是,点击'X'后程序窗体不显示而只是最小化,但是程序依然在运行;点击'ok'则默认调用this.close();

可是,许多用户习惯了PC的操作习惯,认为点了'X'后就退出了程序,其实不然。但是开发者仍然可以做一些处理来做到点击'X'后完全退出程序。

下面看一下程序启动和退出的例子,借此来说明程序的启动顺序和退出顺序!
启动和退出程序Order code

注意:
在说明这个之前,我想说下Form1_LoadOnLoad的区别:基类中的OnLoad函数会引发事件调用Form1_Load。如果你重写OnLoad函数(不调用base.OnLoad(e);而是定义自己在程序加载时的操作),那么基类中引发事件的代码就不会被执行,也就是说Form1_Load将不会被执行
其他几个对应的函数同理。

1. 首先看程序启动的顺序:

1 - Form1 Constructor
2 - OnLoad
3 - Form1_Load
4 - OnActivated
5 - Form1_Activated

我们可以知道程序启动按照“构造函数 - Load - Activated”的顺序进行。


2.
再看当点击'X'号后的退出顺序:

1 - Form1 Constructor
2 - OnLoad
3 - Form1_Load
4 - OnActivated
5 - Form1_Activated
6 - OnDeactivate
7 - Form1_Deactivate

可以得到点击'X'号的退出顺序为"Deactivate",但是却没有进入OnClosing和OnClosed中,由此我们也就明白了为什么在最初点击'X'号后程序并不退出的原因了。那么,该怎么处理呢,很简单,由于在点'X'号后程序进入Deactivate,因此,我们在OnDeactivate或Form1_Deactivate中调用this.close()就能进入到OnClosing和OnClosed中了,然后在OnClosing和OnClosed中做一些退出处理,就是这样!


3. 点击'ok'后的退出顺序

1 - Form1 Constructor
2 - OnLoad
3 - Form1_Load
4 - OnActivated
5 - Form1_Activated
6 - OnClosing
7 - Form1_Closing
8 - OnClosed
9 - Form1_Closed
10 - OnDeactivate
11 - Form1_Deactivate

呵呵,果然如此,点击'ok'后果然比点击'X'后多了OnClosing和OnClosed的处理。

__________
相信通过上面的说明,再加上您自己的单步调试,你对程序加载和退出的机制已经明白了。
OK,就到这里!
Good Luck!

 
 
 
 

--------------------------------------------------

李森 – listen
E-mail:  lisencool@gmail.com

声明:
这里集中了在WinCEWindows Mobile开发中的一些基本常识。我很乐意和大家分享,也希望大家提出意见,并给我投稿,我会第一时间替您发表并署上您的大名!

Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.

  






posted on 2009-09-21 14:14  listenlisten  阅读(1008)  评论(1编辑  收藏  举报

导航