簡體   English   中英

知道什么時候在設計模式

[英]Knowing when in design mode

在類庫中,我想知道它是否在設計模式下被訪問而不是正常的運行時。

我嘗試使用System.ComponentModel.LicenseManager.UsageMode,但即使我在編輯表單時它似乎也有一個Runtime值。

更新:為了澄清,我想知道我是否處於設計模式,而不是來自組件內,而是來自一個單獨的類,恰好是由表單或控件中的其他項調用。 我有一個Utility類,它是從一個控件間接調用的,我需要知道我是否處於設計模式。

您可以使用Component.DesignMode來檢查這一點。 但是,請注意,這將始終在組件的構造函數內報告false ,因此需要稍后進行檢查。 有關詳細信息,請參閱調試設計時控件


編輯以回應評論和編輯:

不幸的是, LicenseMananger以及提供有關您是否處於設計時(包括Component.DesignModeDesignerProperties.IsInDesignMode )的信息的大多數其他服務都專門用於處理用戶界面元素。 這是有道理的,因為它們旨在告訴您何時在設計器表面上“設計”您的項目,這需要在設計器中注冊該組件。

沒有任何一個屬性會在任意類中干凈地告訴你這一點。

我可以看到兩個選項,兩個都不太理想:

  1. 將所需信息傳遞到您的類(即: ComponentDependencyObject ),因此上述方法可用於正確檢查設計時訪問。 這可能是一種更易於維護的方法,並且可能在更多情況下正常工作。
  2. 求助於檢查當前進程名稱並查找“devenv”的“hack” - 這非常糟糕,因為它只假定Visual Studio,依賴於可執行文件名等等...一般來說,我會提到它,因為你會發現它有足夠的搜索,但不會推薦它,因為它很容易規避,並有許多限制和缺陷。

在這種情況下,我不認為Component.DesignMode會有所幫助。 如果表單設計器上沒有加載組件或控件,該怎么辦? 在這種情況下你可以嘗試的是,創建一個枚舉,它只在正常啟動時設置一個值,否則默認保持為另一個值。 您現在可以檢查枚舉實例的值,並確定它是設計時還是運行時。

是否無法使用Component.DesignMode屬性?

以下是有關應用屬性以獲取特定於設計時的行為的一些信息: http//msdn.microsoft.com/en-us/library/37899azc.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM