C# 窗体程序加载,事件触发顺序

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 18:07   36   0

很多人可能在前期开发窗体运用程序时,对窗体事件执行顺序都存在一些不明确的认识。在此,我个人总结一下自己的经验认识,如若存在误解的,欢迎指出讨论。

通常,我们观察窗体加载时,我们也可以看出一些规律。比如一个窗体内容很多的窗体,我们会看到,窗体的边框会最先出现,但是里面的内容还在加载,如果说对控件有绑定值的操作,那种效果就会更加明显。这时,我们可能就会有先让窗体加载出来,在让他在慢慢的加载一些隐藏数据。。。

带着一些疑问,我们一起来看一下接下来要说的内容吧。

对于一个窗体程序,第一步,我们都知道,一定是执行Form()构造函数,初始化窗体,控件等内容,待内容初始完备后,将窗体Show()出来。

这里需要注意的是,我们可以用Show()和ShowDialog()两个方法可以用,通常情况下,我们一般都用Show()这个方法。其实要用哪一个方法,还是需要结合我们具体的需求,而Show()与ShowDialog()的主要区别在于,后一个展示的窗体是独占的,如果打开了对应的窗体,不将其关掉,它便会独占主线程,使得不能在对系统的其他功能做操作,而前一个便不会有这样的影响。

或许这时有人会以为 Show()方法执行之后,接下来应该是执行Shown()方法。这里注意了,在Show()方法之后,主线程是会继续执行Load()事件,通常我们对窗体的初始化赋值,一般都是写在这个事件里面,但是也有人会写在构造函数里。不过个人建议一下,对应一些控件层级的操作(给一个控件添加一个默认控件)等操作,可以写在构造函数里,其他的变量赋值等之类的操作,尽量都写在Load()事件里吧。

Load()事件完成后,接下来便是执行Shown()方法,不过在窗体程序的编写中,很少用到这一个方法,可做一个了解,说不定哪天遇到某个需求,就需要用到这个方法才能有效的解决。值得注意的是,SizeChange()事件与它基本是属于同级的。所以出发Shown()与触发SizeChange()事件都是在Load()事件之后。

而在窗体加载至完成,还有一个非常重要的一个事件,Activated()事件,他是在窗体激活时或产生操作(包括鼠标点击)时发生。在窗体主线程执行完成会触发此事件,所以,在这里面的操作,是不会对窗体的加载造成影响的,所以加快窗体的加载速度,可以在这个事件上面动文章。不过如果想不到这个的事件,想要不影响窗体加载,提高窗体加载速度,可以利用线程等来实现。其原理都是让主线程快速执行完成,这样窗体就不会停留在假死的状态呢。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP