日期:2014-05-19  浏览次数:20850 次

OnPaint()方法和Paint事件
Control有个Onpaint方法,还有一个事件,我先知道,Onpaint方法好像没有用的着的地方,Paint事件是怎么触发的?希望高手解释的清除点,对这个很迷糊。

------解决方案--------------------
如果从父类继承控件,那么重写父类的方法是首选!

OnPaint方法是父类的方法,在这个方法里引发了事件Paint,它的引发我们不用关心,只需知道Paint事件是在OnPaint方法里引发的,对于自定义控件我们可以直接重写其OnPaint方法,而不是添加它的Paint事件,但是对于子控件来说,我们才应该使用其Paint事件并添加事件的处理方法.
------解决方案--------------------
当Control需要重绘时比如遮挡它的窗口被移开,窗口最大化, 处理这些过程的方法会调用OnPaint,OnPaint会执行Paint事件,也就是内部的delegate, Subscripe Paint事件的方法就会被执行.
所以override OnPaint事件可以重绘Control, Subscripe Paint事件也可以.