.NET Compact Framework1.0下自定义控件的编写4-论CF与完整版.NET的异同

l         完整版.NET下对库做了修改不需要重新配置库的调用程序,但如果需要更新图标的话则需重新配置(所谓“配置”即将控件从工具栏中删除后又重新加入)。

l         精简版不支持环境变量。

l         注意在完整版中,如果自定义控件控件希望屏蔽一个基类属性,使它彻底不可见(即在属性浏览器和智能感知器中都看不到),对该属性同时使用EditorBrowable特性和Browable特性即可。但在CF中,要达到同样的效果,往往是将这两个特性分开使用的,即将Browable特性施加于控件的设计期版本中的属性,使其在属性浏览器中不可见,而EditorBrowable特性应该施加于控件的运行期版本的相应属性,才会使它在智能感知中不可见。

l         估计在精简版中,Form窗体没有Font属性。实验现象:重载了基类的OnParentChanged方法,在其中调用this.BackColor=Parent.BackColorthis.Font=Parent.FontBackColor可以达到预期效果,而Font却造成StackOverflowException;分析:估计Form没有Font属性,或者它的属性始终是(“宋体”,9pt),因为如上OnParentChanged函数,即使在设计期修改了控件的Font,且在InitializeComponent中看到了这种修改,运行时也没有效果,所以,对于Font,自定义控件一定要有默认值。

l         CF似乎不支持UITypeEditor

l         一旦窗体添加了一个实现了ISupportInitialize接口的组件,则窗体的InitializeComponent方法中将在首尾自动加入对该组件实现的ISupportInitialize接口中的BeginInitEndInit方法的调用。(很可惜CF不支持ISupportInitialize接口)

l         精简版.NET下不支持ISupportInitialize接口,而有时对属性Setter的调用次序又必须人为控制,如何解决这个问题?

见文章2

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值