設計階段架構
下列圖表提供 .NET Framework 中設計階段架構的概觀。
.NET Framework 提供在設計階段環境中自訂元件行為和使用者介面的介面和類別。 設計階段環境通常包含排列元件的表單設計工具和設定元件屬性值的屬性瀏覽器。 設計階段環境通常也提供設計階段機制可以存取和使用的設計階段服務。
.NET Framework 會定義開發人員可以用來實作自訂設計階段支援的介面。 下列分類中的擴充設計階段支援的主要機制:設計工具、型別轉換子和 UI 型別編輯器。 屬性 (Attribute) 會套用至型別和型別成員,以讓它們與這些設計階段支援提供者產生關聯。
屬性
屬性會讓型別或型別成員與可擴充設計階段行為的類別產生關聯。 DesignerAttribute 能讓型別與設計工具產生關聯。 TypeConverterAttribute 能讓型別或型別成員與型別轉換子產生關聯。 EditorAttribute 能讓型別或型別成員與 UI 型別編輯器產生關聯。 如需有關 .NET Framework 中屬性的詳細資訊,請參閱元件的設計階段屬性和屬性和設計階段支援。
設計工具
設計工具可以在設計階段自訂元件行為,包含它的外觀、初始設定和使用者互動。 設計工具可以加入、移除或取代屬性瀏覽器中為選取的元件列出的屬性。 設計工具可以提供能連結至特定元件事件或能從自訂功能表命令或 DesignerVerb 執行之使用者定義的方法。 設計工具也能使用設計階段環境提供的服務。 如需設計工具的詳細資訊,請參閱自訂設計工具。
型別轉換子
您可以實作型別轉換子,然後在轉換子用於支援之型別以及轉換子可以交互轉換之其他資料型別之間轉換值。 型別轉換子也能提供能於設計階段在屬性瀏覽器中設定屬性的邏輯。 型別轉換子可以於設計階段在屬性瀏覽器中為它支援的型別屬性提供標準值清單。 型別轉換子也能產生能在設計階段初始化屬性的初始設定程式碼。 如需實作型別轉換子的詳細資訊,請參閱 HOW TO:實作型別轉換子。
UI 型別編輯器
UI 型別編輯器可提供能在設計階段編輯屬性和表示屬性值的自訂使用者介面 (UI)。 UI 型別編輯器是型別專用的,它可以在設計階段提供能設定它建置來支援的型別或衍生型別 (沒有覆寫屬性) 的屬性的使用者介面。 UI 型別編輯器可以顯示能設定屬性的 Windows Form 或下拉組態介面。 如需有關實作 UI 型別編輯器的詳細資訊,請參閱 HOW TO:實作 UI 型別編輯器。
注意事項 |
---|
型別轉換子和 UI 型別編輯器在設計階段和執行階段都可以使用,而設計工具則僅用於設計階段。 |
與設計相關的型別
下表說明與設計相關之命名空間中的一些重要類別。
System.Drawing.Design
型別 |
描述 |
---|---|
提供可用來實作值編輯器的基底類別。 |
|
提供方法和屬性,以管理及查詢開發環境中的 [工具箱]。 |
|
提供工具箱項目的基底實作。 |
System.ComponentModel.Design
型別 |
描述 |
---|---|
提供型別的基底類別,該型別定義用於建立智慧標籤面板的項目清單。 |
|
呈現可供設計元件的使用者介面。 |
|
提供建置 (Build) 自訂設計工具的基本架構。 |
|
提供根層次設計工具檢視技術的支援。 |
|
提供在設計階段加入及移除擴充性提供者 (Extender Provider) 的介面。 |
|
指定泛型復原/取消復原功能。 |
System.Windows.Forms.Design
型別 |
描述 |
---|---|
提供 UI 型別編輯器的介面,在設計模式中顯示 Windows Form,或是將控制項顯示於 PropertyGrid 控制項的下拉區域中。 |
|
可供擴充 Control 之設計模式行為的基底設計工具類別。 |
|
基底設計工具類別,可擴充支援巢狀控制項並接收捲動訊息之 Control 的設計模式行為,並為它提供根層次的設計模式檢視。 |
System.Windows.Forms.Design.Behavior
型別 |
描述 |
---|---|
管理設計工具中的使用者介面。 |
|
表示由 BehaviorService 管理的 Behavior 物件。 |
|
管理使用者介面相關之 Glyph 物件的集合。 此類別無法被繼承。 |
|
代表由 Adorner 管理的單一使用者介面 (UI) 實體 (Entity)。 |
設計階段服務
.NET Framework 提供一組能擴充設計工具功能的設計階段服務。 您可以使用設計模式中所設置元件的 GetService 方法取得這些服務。 您可以自行加入能從設計模式專案使用 IDesignerHost 服務介面之 AddService 方法存取的服務型別。
IComponentChangeService 介面可以讓設計工具在設計階段環境中,於變更、加入或移除元件時接到告知。
IDesignerEventService 介面可以讓設計工具在設計階段環境中,於加入或移除設計工具以及目前的元件選取變更時,接到告知。
IDesignerFilter 介面可以讓設計工具加入至及篩選顯示於其元件屬性瀏覽器中的屬性集。
IDesignerHost 介面提供可以加入及擷取服務、處理與設計工具狀態相關的事件、偵測目前是否正在載入設計工具,以及管理元件或設計工具交易的介面。 設計工具交易能讓動作序列在模式中發生,防止設計階段檢視重新整理顯示畫面,直到動作序列完成為止,以改善效能,同時還提供能復原交易元件動作和還原先前狀態的機制。
IDesignerOptionService 介面可以讓設計工具取得並設定 Windows Form 設計工具屬性方格 (可以從 Visual Studio 環境中的 [工具] 功能表上 [選項] 功能表項目中存取) 中所列出的屬性值。 DesignerOptionService 類別可擴充查詢選項的彈性。
IDictionaryService 介面可以讓設計工具使用能夠以金鑰或值存取之使用者定義資料的金鑰架構集合和金鑰組 (Key Pairs)。
IEventBindingService 介面可以讓設計工具於設計階段已選取元件時,在屬性瀏覽器中公開 (Expose) 元件的事件。
IExtenderListService 介面可以讓設計工具在設計階段環境中,取得目前在使用中的擴充性提供者。 IExtenderProviderService 介面可以讓設計工具在設計階段加入或移除擴充性提供者。
IHelpService 介面可以讓設計工具建立及移除說明服務內容、建立及移除說明內容屬性,以及依關鍵字或 URL 顯示說明主題。
IInheritanceService 介面可以讓設計工具搜尋衍生類別的元件,並識別各元件繼承的任何屬性。
IMenuCommandService 介面可以讓設計工具在設計階段環境中搜尋、加入、移除或叫用功能表命令。
IReferenceService 介面可以讓設計工具依參考取得物件名稱、依名稱取得物件的參考、取得指定元件之父代的參考,或在目前設計模式專案中所指定型別物件的參考。
IResourceService 介面可以讓設計工具取得所指定 CultureInfo 的資源讀取器或資源寫入器。
IRootDesigner 介面可以讓設計工具以自訂設計工具檢視顯示取代根設計工具檢視。 IRootDesigner 介面必須由元件的設計工具進行實作。
ISelectionService 介面可以讓設計工具取得目前已選取元件的參考集、將選取範圍設定為一個或一組元件,以及判斷是否已選取任何元件。
IServiceContainer 介面可以讓設計工具加入或移除可由其他元件或設計工具使用的服務。
ITypeDescriptorFilterService 介面可以讓元件或設計工具篩選任何元件在設計階段公開的屬性 (Attribute)、事件和屬性 (Property)。 ITypeDescriptorFilterService 介面必須由可以使用設計模式中所設置元件之 Site 的 AddService 方法加入做為服務的類別進行實作。
ITypeResolutionService 介面可以讓設計工具加入組件的參考至專案、依名稱取得型別或組件,以及取得指定之組件的路徑。
DesignerActionService 和 DesignerActionUIService 類別會實作自訂設計工具的智慧標籤功能。 如需詳細資訊,請參閱 Windows Form 的設計工具命令和 DesignerAction 物件模型。
BehaviorService 管理設計工具中的使用者介面。 它提供一致的方式,管理使用者介面項目,例如與滑鼠相關的事件、功能表命令,以及設計階段的 OLE 拖放作業。 如需詳細資訊,請參閱行為服務概觀。
CodeDomComponentSerializationService 類別將一組元件或可序列化物件序列化為序列化存放區。 如需詳細資訊,請參閱 設計工具序列化概觀。
請參閱
工作
HOW TO:在 Windows Form 中存取設計階段支援
概念
Windows Form 的設計工具命令和 DesignerAction 物件模型