IMPORTANTE
C'è una differenza nell'usare Windows Form o WPF !!
Hanno designer diversi e necessitano di controlli diversi . Inoltre è complicato quando si combinano moduli e controlli WPF. (es. controlli WPF all'interno di una finestra Forms)
Se hai solo Windows Form , usa questo:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Se hai solo WPF , usa questo controllo:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Se hai un utilizzo misto di Moduli e WPF, usa un controllo come questo:
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
}
Per vedere la modalità corrente puoi mostrare un MessageBox per il debug:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Nota:
È necessario aggiungere gli spazi dei nomi System.ComponentModel e System.Diagnostics .
ISite.DesignMode.