The DesignMode property is frequently used to prevent the designer from running code the should only be executed at runtime. This works fine for both forms and user controls.
After adding a usercontrol to a form, the story changes. Opening the form in the IDE continues to produce the expected behavior, however the usercontrol now behaves as if it is runtime. The code that is supposed to be runtime-only is now executing in the designer anyway. This can lead to a number of performance issues and bizarre IDE errors, particularly when the code accesses a database (and has to wait for a connection to timeout) or tries to access an object (that may or may not have been instantiated).
Restructuring the code is always an option, however this type of code is almost impossible to find unless it does something that is either time consuming or error-prone at runtime. Most developers would simply overlook it as the cause of their IDE crashes because of the designmode block anyway.