dows的信息传递给继承者的OnPaint程序。在编写覆盖程序时你可以运行自己的代码,而不需要完全按照基类的做法。尽管Control类不是一个抽象基类,但它自己并不完成任何绘制。然而,在你需要继承一个类时,――比如Button或Label类,通常你会取代基类的painting,而不是将它添加到你的程序中。OnPaint 覆盖中包括一个对MyBase的调用,这不是因为基类需要进行处理来实现绘制,而是为了给用户提供一个自己的Paint事件。继承类不会直接代表其基类来触发事件,对MyBase.OnPaint的调用导致基类触发客户端Paint事件。 这一点会对你将来构建控件有所影响,因此为了让你有更全面的了解我将从另一个角度对它进行讲述。如果你通过覆盖一个OnPaint 来支持你自己的作品(就是说用于一个标准的Button基类),而且你不仅仅想要实现基类所完成绘制,那么你的OnPaint覆盖中就不应该包含MyBase.OnPaint调用。在这个场景中,如果你还想为使用派生控件的开发人员提供一个Paint事件,则必须在基类中提供一个Paint事件声明。如果基类中已存在了一个Paint事件,你则必须用Shadows关键字来声明你自己的事件从而将基类的事件隐藏起来。不要轻易尝试使用Shadows,因为它容易让使用该控件的开发人员搞糊涂,虽然在一个事件中使用这种方法看起来似乎页码:[1] [2] [3] [4] [5] [6] [7] [8] 第3页、共8页 |