Windows 窗設計時結構
Windows 窗體程式設計
設計時結構
下面的闡釋概述了 .NET Framework 中的設計時結構。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='點選在新視窗浏覽圖檔\nCTRL+Mouse 滾輪可放大/縮小';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" src="http://msdn2.microsoft.com/zh-cn/library/c5z9s1h4.Local_-1517273875_dtarchitecture(zh-cn,VS.80).gif" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點選在新視窗浏覽圖檔\nCTRL+Mouse 滾輪可放大/縮小';}" border=0> .NET Framework 為在設計時環境中自定義元件行為和使用者界面提供了接口和類。設計時環境通常包括用于排列元件的窗體設計器和用于配置元件的屬性值的屬性浏覽器。設計時環境通常還會提供設計時機制可以通路和使用的設計時服務。
.NET Framework 定義了開發人員可用來實作自定義設計時支援的接口。擴充設計時支援的主要機制可分為以下幾類:設計器、類型轉換器和 UI 類型編輯器。屬性會應用到類型和類型成員,以使它們與這些設計時支援提供程式關聯。
屬性屬性将類型或類型成員與擴充設計時行為的類關聯。DesignerAttribute 使類型與設計器關聯。TypeConverterAttribute 使類型或類型成員與類型轉換器關聯。EditorAttribute 使類型或類型成員與 UI 類型編輯器關聯。有關 .NET Framework 中的屬性的更多資訊,請參見元件的設計時屬性 (Attribute) 和屬性與設計時支援。
設計器設計器可以在設計時自定義元件的行為,包括它的外觀、初始化以及與使用者的互動。對于標明的元件,設計器可以添加、移除或替換屬性浏覽器中列出的屬性。設計器可以提供使用者定義的方法,這些方法可以連結到某些元件事件,或從自定義菜單指令或 DesignerVerb 中執行。設計器還可以使用由設計時環境提供的服務。有關設計器的更多資訊,請參見自定義設計器。
類型轉換器通過實作類型轉換器,可在該轉換器的既定支援類型和其他資料類型(在這些資料類型之間該轉換器可以來回翻譯值)之間轉換值。類型轉換器還可提供邏輯,以便在設計時能夠在屬性浏覽器内配置屬性。對于類型轉換器在屬性浏覽器中在設計時支援的屬性類型,類型轉換器可以為該屬性提供标準值的清單。類型轉換器還可以生成初始化代碼,以便在設計時初始化屬性。有關實作類型轉換器的資訊,請參見如何:實作類型轉換器。
UI 類型編輯器UI 類型編輯器可以提供一個自定義使用者界面 (UI),以便在設計時編輯屬性的值并顯示屬性值的表示形式。UI 類型編輯器是特定于具體類型的,并且提供了使用者界面,以便在設計時配置該編輯器既定支援的屬性類型或不具有重寫屬性的派生類型的屬性。UI 類型編輯器可以顯示“Windows 窗體”或下拉配置界面以便配置屬性。有關實作 UI 類型編輯器的更多資訊,請參見如何:實作使用者界面類型編輯器。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='點選在新視窗浏覽圖檔\nCTRL+Mouse 滾輪可放大/縮小';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" src="http://msdn2.microsoft.com/zh-cn/library/c5z9s1h4.note(zh-cn,VS.80).gif" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點選在新視窗浏覽圖檔\nCTRL+Mouse 滾輪可放大/縮小';}" border=0>注意 |
類型轉換器和 UI 類型編輯器在設計時和運作時都可使用,而設計器隻能在設計時使用。 |
與設計相關的類型下表列出了與設計相關的命名空間中的一些重要的類。
System.Drawing.Design
類型 | 說明 |
UITypeEditor | 提供用于實作值編輯器的基類。 |
IToolboxService | 提供管理和查詢開發環境中的“工具箱”的方法和屬性。 |
ToolboxItem | 提供工具箱項的基實作。 |
System.ComponentModel.Design
類型 | 說明 |
DesignerActionList | 為類型提供基類,這些類型定義用于建立智能标記面闆的項目的清單。 |
DesignSurface | 為設計元件提供一個使用者界面。 |
IDesigner | 提供建構自定義設計器的基本架構。 |
IRootDesigner | 提供對根級設計器視圖技術的支援。 |
IExtenderProviderService | 提供一個接口,用于在設計時添加和移除擴充程式提供程式。 |
UndoEngine | 指定一般撤消/重複功能。 |
System.Windows.Forms.Design
類型 | 說明 |
IWindowsFormsEditorService | 提供一個接口,供 UI 類型編輯器用來在設計模式下顯示 Windows 窗體,或顯示 PropertyGrid 控件中的下拉區域中的控件。 |
ControlDesigner | 基設計器類,用于擴充 Control 的設計模式行為。 |
DocumentDesigner | 基設計器類,用于擴充支援嵌套控件并接收滾動消息的 Control 的設計模式行為,并為其提供根級設計模式視圖。 |
System.Windows.Forms.Design.Behavior
類型 | 說明 |
BehaviorService | 管理設計器中的使用者界面。 |
Behavior | 表示由 BehaviorService 管理的 Behavior 對象。 |
Adorner | 管理與使用者界面相關的 Glyph 對象的集合。此類不能被繼承。 |
Glyph | 表示一個由 Adorner 管理的使用者界面 (UI) 實體。 |
設計時服務.NET Framework 提供一組可以擴充設計器功能的設計時服務。使用設計模式中的元件的 GetService 方法可擷取這些服務。您可以使用 IDesignerHost 服務接口的 AddService 方法來添加您自己的可從設計模式項目中通路的服務類型。
IComponentChangeService 接口允許設計器在程式設計人員在設計時環境中更改、添加或移除元件時接收通知。
IDesignerEventService 接口允許設計器在程式設計人員在設計時環境中添加或移除設計器時以及目前元件選擇發生更改時接收通知。
IDesignerFilter 接口允許設計器在屬性浏覽器中為其元件顯示的屬性集合添加屬性以及篩選屬性集合中的屬性。
IDesignerHost 接口提供了一個用于執行以下操作的接口:添加和檢索服務,處理與設計器狀态相關的事件,檢測設計器目前是否正在加載,以及管理元件或設計器事務。設計器事務使操作序列能夠按這樣一種模式發生:防止設計時視圖在一系列操作完成之前重新整理其顯示,以便改善性能,同時,設計器事務還提供了一種機制,可使事務的元件操作能夠被撤消并恢複以前的狀态。
IDesignerOptionService 接口允許設計器擷取和設定 Windows 窗體設計器屬性網格中列出的屬性值,在 Visual Studio 環境中,可從“工具”菜單中的“選項”菜單項通路 Windows 窗體設計器屬性網格。DesignerOptionService 類擴充了查詢選項的靈活性。
對于使用者定義的資料和可由鍵或值通路的鍵對,IDictionaryService 接口允許設計器使用基于鍵的集合。
當選中元件時,IEventBindingService 接口允許設計器在設計時公開屬性浏覽器中的元件的事件。
IExtenderListService 接口允許設計器在設計時環境中擷取目前活動的擴充程式提供程式。IExtenderProviderService 接口允許設計器在設計時添加或移除擴充程式提供程式。
IHelpService 接口允許設計器建立和移除幫助服務上下文、建立和移除幫助上下文屬性以及按照關鍵字或 URL 顯示幫助主題。
IInheritanceService 接口允許設計器搜尋派生類的元件并辨別每一元件的任何繼承屬性。
IMenuCommandService 接口允許設計器在設計時環境中搜尋、添加、移除或調用菜單指令。
IReferenceService 接口允許設計器在目前設計模式項目中按引用擷取對象名稱,按名稱擷取對對象的引用,擷取對指定元件的父級引用,或擷取對指定類型的對象的引用。
IResourceService 接口允許設計器為指定的 CultureInfo 擷取資源讀取器或資源編寫器。
IRootDesigner 接口允許設計器使用自定義設計器視圖螢幕替換根設計器視圖。IRootDesigner 接口必須由元件的設計器實作。
ISelectionService 接口允許設計器擷取對目前所選元件的引用的集合,設定元件或元件集合的標明内容,以及确定是否標明了元件。
IServiceContainer 接口允許設計器添加或移除可被其他元件或設計器使用的服務。
ITypeDescriptorFilterService 接口允許元件或設計器在設計時篩選由任何元件公開的屬性 (Attribute)、事件和屬性 (Property)。ITypeDescriptorFilterService 接口必須由一個類實作;而使用設計模式中設定的元件的 Site 的 AddService 方法,應當可以将該類添加為服務。
ITypeResolutionService 接口允許設計器給項目添加對程式集的引用,按名稱擷取類型或程式集,以及擷取指定程式集的路徑。
DesignerActionService 和 DesignerActionUIService 類實作自定義設計器的智能标記功能。有關更多資訊,請參見 Windows 窗體的設計器指令和 DesignerAction 對象模型。
BehaviorService 管理設計器中的使用者界面。它為在設計時操作使用者界面元素(例如與滑鼠相關的事件、菜單指令和 OLE 拖放操作)提供了一種統一的方式。有關更多資訊,請參見行為服務概述。
CodeDomComponentSerializationService 類可将一組元件或可序列化的對象序列化到一個序列化存儲區中。有關更多資訊,請參見設計器序列化概述。
歡迎大家加入 "小強控件園" ,有更多驚喜等着你,進入小強控件園
工欲善其事,必先利其器
小強控件園,MVP技術後盾!趕快加入!