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

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

2014年01月22日 ⁄ 综合 ⁄ 共 903字 ⁄ 字号 评论关闭

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

 

抱歉!评论已关闭.