IMPORTANTE
Existe uma diferença de usar Windows Forms ou WPF !!
Eles têm designers diferentes e precisam de verificações diferentes . Além disso, é complicado quando você mistura controles de formulários e WPF. (por exemplo, controles WPF dentro de uma janela do Formulários)
Se você tiver apenas Windows Forms , use este:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Se você tiver apenas WPF , use esta verificação:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Se você misturou o uso de formulários e WPF, use uma verificação como esta:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
if (isInWpfDesignerMode || isInFormsDesignerMode)
{
// is in any designer mode
}
else
{
// not in designer mode
}
Para ver o modo atual, você pode mostrar uma MessageBox para depuração:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Observação:
Você precisa adicionar os namespaces System.ComponentModel e System.Diagnostics .
ISite.DesignMode
.