WICHTIG
Es gibt einen Unterschied bei der Verwendung von Windows Forms oder WPF !!
Sie haben unterschiedliche Designer und benötigen unterschiedliche Prüfungen . Außerdem ist es schwierig, Formulare und WPF-Steuerelemente zu mischen. (zB WPF-Steuerelemente in einem Formularfenster)
Wenn Sie nur Windows Forms haben , verwenden Sie Folgendes:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Wenn Sie nur WPF haben , verwenden Sie diese Prüfung:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Wenn Sie Forms und WPF gemischt verwenden , verwenden Sie eine Prüfung wie folgt:
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
}
Um den aktuellen Modus anzuzeigen, können Sie eine MessageBox zum Debuggen anzeigen:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Anmerkung:
Sie müssen die Namespaces System.ComponentModel und System.Diagnostics hinzufügen .
ISite.DesignMode
.