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

近阶段新写了几个控件,发现初始化时候很慢,其中一个的初始化时间要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。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值