using (System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess())
{
bool inDesigner = process.ProcessName.ToLower().Trim() == "devenv";
return inDesigner;
}
Я попробовал приведенный выше код (добавил оператор using), и в некоторых случаях это не получалось. Тестирование в конструкторе пользовательского элемента управления, размещенного непосредственно в форме с загрузкой конструктора при запуске. Но будет работать в других местах.
Что сработало для меня, во всех местах:
private bool isDesignMode()
{
bool bProcCheck = false;
using (System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess())
{
bProcCheck = process.ProcessName.ToLower().Trim() == "devenv";
}
bool bModeCheck = (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime);
return bProcCheck || DesignMode || bModeCheck;
}
Может быть, немного излишним, но это работает, так что для меня это достаточно.
Успехом в приведенном выше примере является bModeCheck, поэтому, вероятно, DesignMode является излишним.