You can also use new for non-virtual methods, events and properties(you
can't with override).
For example, we have a custom control library that is used as the basis for
our company's suite of applications. To deter the developers in other groups
from trying to change say, the background color of a control, we use "new"
to hide the underlying Control.BackgroundColor property So that if they set
the background color of one of our controls, we simply ignore it.
This isn't foolproof, though. If the end-developer wanted to get around it,
he/she could simply cast to the base class of the control and call the
BackgroundColor property that way. Of course, then we'd have to take him out
back and beat the $@#% out of him which is a much more effective deterrent.
Pete