The DesignMode Property




The DesignMode Property

To change the behavior of a component depending on whether it's executing at design time or run time, you need to know that you're running in a designer. This information is provided by Component's DesignMode property, which returns true at design time or returns false at run time and during the execution of a component's constructor at design time.

Using DesignMode makes it relatively simple to prevent AlarmClockControl from constantly repainting at design time:

void timer_Tick(object sender, EventArgs e) {
  ...
  // Don't do anything if executing at design time
  if( this.DesignMode ) return;
  ...
  // Refresh clock face
  this.Invalidate();
}

Note that Component.DesignMode reports that a component is operating in the design time only if the component has been sited. Because the design time sets the ISite reference after it instantiates a component, you can't inspect Component.DesignMode from a component's constructor.