Вы можете использовать Component.DesignMode , чтобы проверить это.Однако имейте в виду, что это всегда будет сообщать false
внутри конструктора компонента, поэтому его необходимо проверить позже.Подробнее см. Отладка элементов управления времени разработки .
Редактировать в ответ на комментарии и редактировать:
К сожалению, LicenseMananger
, а также большинстводругие службы, которые предоставляют информацию о том, находитесь ли вы в режиме разработки (включая Component.DesignMode
и DesignerProperties.IsInDesignMode ), специально предназначенные для обработки элементов пользовательского интерфейса.Это имеет смысл, поскольку они предназначены для того, чтобы сообщать вам, когда ваш элемент «проектируется» на поверхности конструктора, для чего требуется, чтобы компонент был зарегистрирован в конструкторе.
Нет единого свойства, которое будет чистосказать вам это из произвольного класса.
Я мог видеть два варианта, оба из которых не идеальны:
- Передать необходимую информацию в ваш класс (то есть: a
Component
или DependencyObject
), поэтому описанные выше методы можно использовать для правильной проверки доступа во время разработки.Это, вероятно, более приемлемый подход, и, скорее всего, он будет работать должным образом в других ситуациях. - Прибегайте к «хаку» проверки текущего имени процесса и поиска «devenv» - этодовольно ужасно, так как предполагает только Visual Studio, полагается на имя исполняемого файла и т. д. В общем, я упомяну это, потому что вы найдете его с достаточным количеством запросов, но не рекомендовали бы его, так как это очень легкообходит и имеет много ограничений и недостатков.