ВАЖЛИВО
Існує різниця у використанні Windows Forms або WPF !!
Вони мають різних дизайнерів і потребують різних перевірок . Крім того, складно, коли ви змішуєте елементи Forms та WPF. (наприклад, елементи керування WPF всередині вікна Форми)
Якщо у вас є лише Windows Forms , використовуйте це:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Якщо у вас є лише WPF , використовуйте цю перевірку:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Якщо у вас змішане використання Forms та 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
.