现在的位置: 首页 > 综合 > 正文

.net CF控件的OnResize被多次执行的问题

2013年04月17日 ⁄ 综合 ⁄ 共 606字 ⁄ 字号 评论关闭

近阶段新写了几个控件,发现初始化时候很慢,其中一个的初始化时间要5秒钟之多,到了忍无可忍的境地,于是乎,跟踪了一下代码,发现问题出现在重写的OnResize中,初始化时候OnResize方法竟然被调用了5次之多,而我又在OnResize方法中执行了一些读取图像文件并绘图的工作,不慢才怪了....

于是写了一个继承于UserControl的超简单控件,并重写了OnResize方法,里面只有一句话,那就是调用基类的OnResize方法(必须调用基类的OnResize方法,详情见MSDN),下面详述每次OnResize被调用的过程:

  1. 在控件本身 InitializeComponent() 方法中最后一句语句执行之后被调用;
  2. 在父控件的 InitializeComponent() 方法中对本控件的 Location 属性赋值后被调用;
  3. 在父控件的 InitializeComponent() 方法中对本控件的 Size 属性赋值后被调用;
  4. 在父控件的 InitializeComponent() 方法中最后一句语句执行之后被调用;
  5. 窗体显示之后被调用

为什么被调用了这么多次?不得而知..

同样在WinForm平台上写了一个继承于UserControl的超简单控件,OnResize方法只用在父控件对其 Size 属性赋值之后才会被调用,仅此一次而已。

 

有时间再研究下CF下OnResize方法被调用这么多次,是实现方式上故意这么做的,还是一个bug。

 

抱歉!评论已关闭.