[英]Knowing when in design mode
在類庫中,我想知道它是否在設計模式下被訪問而不是正常的運行時。
我嘗試使用System.ComponentModel.LicenseManager.UsageMode,但即使我在編輯表單時它似乎也有一個Runtime值。
更新:為了澄清,我想知道我是否處於設計模式,而不是來自組件內,而是來自一個單獨的類,恰好是由表單或控件中的其他項調用。 我有一個Utility類,它是從一個控件間接調用的,我需要知道我是否處於設計模式。
您可以使用Component.DesignMode來檢查這一點。 但是,請注意,這將始終在組件的構造函數內報告false
,因此需要稍后進行檢查。 有關詳細信息,請參閱調試設計時控件 。
編輯以回應評論和編輯:
不幸的是, LicenseMananger
以及提供有關您是否處於設計時(包括Component.DesignMode
和DesignerProperties.IsInDesignMode )的信息的大多數其他服務都專門用於處理用戶界面元素。 這是有道理的,因為它們旨在告訴您何時在設計器表面上“設計”您的項目,這需要在設計器中注冊該組件。
沒有任何一個屬性會在任意類中干凈地告訴你這一點。
我可以看到兩個選項,兩個都不太理想:
Component
或DependencyObject
),因此上述方法可用於正確檢查設計時訪問。 這可能是一種更易於維護的方法,並且可能在更多情況下正常工作。 在這種情況下,我不認為Component.DesignMode會有所幫助。 如果表單設計器上沒有加載組件或控件,該怎么辦? 在這種情況下你可以嘗試的是,創建一個枚舉,它只在正常啟動時設置一個值,否則默認保持為另一個值。 您現在可以檢查枚舉實例的值,並確定它是設計時還是運行時。
是否無法使用Component.DesignMode屬性?
以下是有關應用屬性以獲取特定於設計時的行為的一些信息: http : //msdn.microsoft.com/en-us/library/37899azc.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.