Overrides与Handles Base.Event的区别

比如说下面的两个,都是覆盖了父类的相应处理过程,而在子类中进行重新改写
,,,区别?????????

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

' TODO: 下面添加画图的代码:
End Sub

Private Sub XXX_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) MyBase.OnPaint(e)
' TODO: 下面添加画图的代码:
End Sub

有什么区别???
顺便能不能说一下在什么时候该用哪一种(不必局限于PAINT事件)???

还有,为什么不能一次给200分??
up者有分!!!
关注者有分!!!!
回答详细者另外开贴给分!!!!!!!!!!!!

谢谢!!!!!!!!!!!!
谢谢!!!!!!!!!!!!!!!!!!!
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!
---------------------------------------------------------------

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

' TODO: 下面添加画图的代码:
End Sub

该方法为窗体缺省的画图方法

Private Sub XXX_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handle MyBase.OnPaint(e)
' TODO: 下面添加画图的代码:
End Sub

这个方法可以认为是对窗体缺省的画图方法的重写,通过Handle关键字处理窗体的OnPaint事件,第1个参数 sender 提供对引发事件的对象的引用,第2个参数 PaintEventArgs 指定绘制图形所用的 Graphics 以及绘制图形所在的区域。

所以如果在绘图过程中需要对引发事件的对象进行处理,那么请使用
Private Sub XXX_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handle MyBase.OnPaint(e)
如果仅仅只对窗体进行绘图操作,那么使用窗体缺省的绘图方法就可以了
---------------------------------------------------------------

Overrides——重写基类中定义的 Overridable 属性或方法,适用于对象的继承。
Private Sub XXX_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) MyBase.OnPaint(e)
' TODO: 下面添加画图的代码:
End Sub
是一个事件。
两个是不同的概念。
---------------------------------------------------------------

在你这个问题上是一样的。建议用Handles base.event

---------------------------------------------------------------

面向对象编程首先要清楚事件和方法的区别,正如潇河所言,使用OVERRIDES是重载一个方法,而另一个是编写一段事件的响应代码。虽然二者在此使用的结果没什么区别,但在意义上是不同的。
---------------------------------------------------------------

overrides 是重载基类中的方法或者属性函数等,和 Handle Base.Envet 不是一个概念,但是为了可以 handle base.Event,则必须重载基类中的方法,用 overrides 来指示,这样就实现了不执行基类中方法而执行你所定义的新方法了。

而 Handle Event 则仅仅是一个指示字,表示这段函数或者过程为哪一个事件服务,并不一定是基类中的事件。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus