IMPORTANTE
¡Hay una diferencia entre usar Windows Forms o WPF !
Tienen diferentes diseñadores y necesitan diferentes controles . Además, es complicado mezclar formularios y controles WPF. (por ejemplo, controles WPF dentro de una ventana de formularios)
Si solo tiene Windows Forms , use esto:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Si solo tiene WPF , use esta verificación:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Si tiene un uso mixto de Formularios y WPF, use una marca 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 el modo actual, puede mostrar un cuadro de mensaje para depurar:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Observación:
Debe agregar los espacios de nombres System.ComponentModel y System.Diagnostics .
ISite.DesignMode
.