The point of DesignMode is to detect when a .NET control is being designed, versus when the control is being loaded in runtime. This is useful for example when you have a control that retrieves data from a database: you don’t want that control accessing the database when you’re simply moving stuff around in the IDE. The problem is that DesignMode is quite literal in its behaviour. If for example your control is nested on another control, and that control is dragged onto a form, your control will not report that it is in DesignMode. You’ll also find that DesignMode doesn’t work in your control’s constructor either, because it doesn’t yet know if it is in that mode (or more correctly the ISite property has not been initialised).
Searching around the internets, I’ve found a (so far) infallible way of detecting if your control is being loaded in some form of design mode:
[code]LicenseManager.UsageMode == LicenseUsageMode.Designtime
There you have it.