DotNet剖析系列(二)——控件继承

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

DotNet剖析系列(二)

                           ——控件继承

 

     首先想要告诉大家的是MS一个龌龊的行为,一个人所共知的行为。而这个问题在所有MS提供的基本控件里都存在,比如我们想要对ComboBox这个控件稍微的扩展一下,加上一点点我们自已的东东。结果是很麻烦,很麻烦,甚至你都没办法使用继承来重载OnPaint。因为正常情况下,OnPaint在这个控件里永远不会调用,当然MS告诉你可以用this.SetStyle(ControlStyles.UserPaint)来激活这个方法,很好,不过当你运行了一下,发觉好象不是这么简单,

    protected override void OnPaint(PaintEventArgs e)

       {

           base.OnPaint (e);

       }

什么东东都没有了,就是一个白板,考,这时候你除了自已重新绘制,别无它法。

当然聪明的程序员不会被MS的小伎俩难倒。既然你不让我从OnPaint重载,你总得使用消息吧,那我重载WndProc

private

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值