DotNet剖析系列(二)
——控件继承
首先想要告诉大家的是MS一个龌龊的行为,一个人所共知的行为。而这个问题在所有MS提供的基本控件里都存在,比如我们想要对ComboBox这个控件稍微的扩展一下,加上一点点我们自已的东东。结果是很麻烦,很麻烦,甚至你都没办法使用继承来重载OnPaint。因为正常情况下,OnPaint在这个控件里永远不会调用,当然MS告诉你可以用this.SetStyle(ControlStyles.UserPaint)来激活这个方法,很好,不过当你运行了一下,发觉好象不是这么简单,
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint (e);
}
什么东东都没有了,就是一个白板,考,这时候你除了自已重新绘制,别无它法。
当然聪明的程序员不会被MS的小伎俩难倒。既然你不让我从OnPaint重载,你总得使用消息吧,那我重载WndProc
private

本文探讨了在.NET框架下,针对控件如ComboBox进行扩展时遇到的OnPaint方法不被调用的问题。通过重载WndProc消息处理函数,实现了自定义绘制。文章揭示了微软为了保持外观专利,基础控件的UserPaint属性通常设为false,导致必须通过其他方式实现自定义绘图。同时,作者指出.NET平台虽然设计精良,但在Windows下的实现受到了商业考量的限制。
最低0.47元/天 解锁文章
165





