ВАЖНЫЙ
Есть разница в использовании Windows Forms или WPF !!
У них разные дизайнеры и разные проверки . Кроме того, сложно смешивать элементы управления Forms и WPF. (например, элементы управления WPF внутри окна форм)
Если у вас только Windows Forms , используйте это:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Если у вас только WPF , используйте эту проверку:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Если вы используете смешанные формы и WPF, используйте следующую проверку:
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
}
Чтобы увидеть текущий режим, вы можете показать MessageBox для отладки:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Замечание:
Вам нужно добавить пространства имен System.ComponentModel и System.Diagnostics .
ISite.DesignMode
.