設計工具的初始設定和中繼資料設定
管理設計工具] 或 [設計工具元件相關聯的中繼資料和篩選屬性提供一個機制,來定義特定的設計工具所使用的工具來處理不同的應用程式Type物件 (例如資料結構、 類別或圖形化的實體),當設計工具可供使用,以及 Visual Studio 的 IDE 設定為支援設計工具 (如執行個體的工具箱有可用的類別或] 索引標籤)。
Visual Studio SDK提供好幾種機制,以幫助控制設計工具的或設計工具元件初始設定和它所 VSPackage 的中繼資料的操作。
初始化中繼資料和設定資訊
因為它們是視需要載入,VSPackages 可能會有尚未載入Visual Studio的設計工具執行個體化之前的環境。 因此,當 VSPackages 時,無法建立,也就是處理設定設計工具] 或 [設計工具元件使用的標準機制DesignerCreated事件。相反地,VSPackage 實作的執行個體DesignSurfaceExtension介面,並登錄本身提供自訂項目,稱為 「 設計表面的擴充功能。
自訂初始設定
自訂設計工具、 元件或設計工具的介面,包括:
修改設計工具的中繼資料,以及更有效地變更如何某個Type是用於存取或轉換。
這通常是透過UITypeEditor或TypeConverter機制。
比方說,當System.Windows.Forms-架構設計人員都已初始化, Visual Studio的環境修改UITypeEditor的Image與設計工具使用,以使用資源管理員以取得點陣圖,而不是檔案系統的物件。
整合環境,例如,藉由訂閱事件,或取得專案組態資訊。 您可以取得專案組態資訊,並取得訂閱事件ITypeResolutionService介面。
修改啟動適當的使用者環境的工具箱類別或藉由限制藉由套用的執行個體的設計工具的適用性ToolboxItemFilterAttribute加入設計工具中的類別。
設計工具所 VSPackage 的初始設定
VSPackage 應該可以處理由設計工具的初始化:
建立物件的實作DesignSurfaceExtension類別。
注意事項
DesignSurfaceExtension類別應該永遠不會實作相同的物件,做為Package類別。
註冊類別實作DesignSurfaceExtension做為 VSPackage 的設計工具擴充功能提供支援,藉由套用的例項DesignSurfaceExtensionAttribute, ProvideObjectAttribute和ProvideServiceAttribute類別提供的 VSPackage 實作Package。
每當建立任何設計工具] 或 [設計工具元件時, Visual Studio環境:
存取每個已註冊的設計表面的擴充功能提供者。
執行個體化和初始化執行個體的每個的設計表面的擴充功能提供者的DesignSurfaceExtension物件
每個設計表面的擴充功能提供者會呼叫OnDesignerCreated方法或OnComponentCreated (視需要) 的方法。
當實作DesignSurfaceExtension物件以成員的 VSPackage,請務必瞭解這:
Visual Studio環境不提供任何控制何種中繼資料或其他組態設定,為某種DesignSurfaceExtension提供者的修改。 兩個或以上的DesignSurfaceExtension所限定的最後一個修改,以衝突的方式,修改相同的設計工具功能的提供者。 它是不確定哪個會最後套用修改。
仍可明確限制的實作DesignSurfaceExtension用於特定的設計工具,藉由套用的例項的物件ToolboxItemFilterAttribute該實作方式。 如需有關工具箱項目篩選,請參閱ToolboxItemFilterAttribute和ToolboxItemFilterType。
提供額外的中繼資料
VSPackage 可以變更設定設計工具] 或 [設計工具的元件,而不在執行階段。
ProvideDesignerMetadataAttribute類別可以用程式設計的方式,或套用至 VSPackage,提供設計工具。
執行個體的ProvideDesignerMetadataAttribute類別用來修改設計介面上所建立的元件的中繼資料。 比方說,一個可以取代預設的屬性瀏覽器所使用的CommonDialog物件,使用自訂的屬性瀏覽器。
修改所提供的執行個體的ProvideDesignerMetadataAttribute VSPackage 實作應用於Package可以有兩個範圍的其中一個:
指定元件的所有新的執行個體的 Global-
本機-屬於只在目前的 VSPackage 所提供的設計介面上建立元件的執行個體。
IsGlobal屬性的ProvideDesignerMetadataAttribute執行個體套用至 VSPackage 實作Package決定這個領域。
此屬性套用到的實作Package與IsGlobal屬性的ProvideDesignerMetadataAttribute物件設定為 [ true下,變更瀏覽器的整個Visual Studio環境:
[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true)]
internal class MyPackage : Package {}
如果全域旗標設定成false,那麼就是目前的設計工具支援的目前 VSPackage 的本機中繼資料變更:
[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false)]
internal class MyPackage : Package {}
![]() |
---|
在目前的時間,在設計介面僅支援建立的元件,所以只可以只有本機中繼資料。在上述範例中,我們想要修改屬性,例如Color物件的屬性。如果false傳入的全域旗標CustomBrowser因為設計工具不會實際建立的執行個體永遠不會顯示Color。若要設定全域旗標false適用於元件,例如控制項、 計時器和對話方塊。 |
請參閱
參考
DesignSurfaceExtensionAttribute