WAŻNY
Istnieje różnica w używaniu Windows Forms lub WPF !!
Mają różnych projektantów i wymagają różnych kontroli . Ponadto jest to trudne w przypadku mieszania formantów Forms i WPF. (np. kontrolki WPF w oknie formularzy)
Jeśli masz tylko Windows Forms , użyj tego:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Jeśli masz tylko WPF , użyj tego sprawdzenia:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Jeśli masz mieszane użycie formularzy i WPF, użyj takiego sprawdzenia:
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
}
Aby zobaczyć bieżący tryb, możesz wyświetlić MessageBox do debugowania:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Uwaga:
Musisz dodać przestrzenie nazw System.ComponentModel i System.Diagnostics .
ISite.DesignMode.