C# - when to call base.OnSomething?
I'm using `Windows.Forms` and have to inherit some controls to provide custom behavior. This inheritance obviously leads to method overriding.

*So, here is the question* - in which cases the order of calling `base.OnSomething(...)` can really affect the visible behavior of your program?

    protected override OnRetrieveVirtualItem(RetrieveVirtualItemEventArgs e)
    {
        // base.OnRetrieveVirtualItem(e); - Could this potentially break something?

        // Perform your custom method.
        // ...

        base.OnRetrieveVirtualItem(e); // Is this always "correct"?
    }

As far as I know for know, this order can be important when overriding paint-related methods (`OnDrawItem, ...`), but I guess there *are some other ways to shoot yourself in the leg,* because `Windows.Forms` does a lot of unmanaged code calls with possible side effects.

**So, when could it possibly matter?** And what are the rules of thumb about choosing the correct place to call the `base` method in these cases?


C# - when to call base.OnSomething?
===

I'm using `Windows.Forms` and have to inherit some controls to provide custom behavior. This inheritance obviously leads to method overriding.

*So, here is the question* - in which cases the order of calling `base.OnSomething(...)` can really affect the visible behavior of your program?

    protected override OnRetrieveVirtualItem(RetrieveVirtualItemEventArgs e)
    {
        // base.OnRetrieveVirtualItem(e); - Could this potentially break something?

        // Perform your custom method.
        // ...

        base.OnRetrieveVirtualItem(e); // Is this always "correct"?
    }

As far as I know for know, this order can be important when overriding paint-related methods (`OnDrawItem, ...`), but I guess there *are some other ways to shoot yourself in the leg,* because `Windows.Forms` does a lot of unmanaged code calls with possible side effects.

**So, when could it possibly matter?** And what are the rules of thumb about choosing the correct place to call the `base` method in these cases?

