设计时体系结构
下面的阐释概述了 .NET Framework 中的设计时结构。
.NET Framework 为在设计时环境中自定义组件行为和用户界面提供了接口和类。 设计时环境通常包括用于排列组件的窗体设计器和用于配置组件的属性值的属性浏览器。 设计时环境通常还会提供设计时机制可以访问和使用的设计时服务。
.NET Framework 定义了开发人员可用来实现自定义设计时支持的接口。 扩展设计时支持的主要机制可分为以下几类:设计器、类型转换器和 UI 类型编辑器。 特性会应用到类型和类型成员,以使它们与这些设计时支持提供程序关联。
特性
特性将类型或类型成员与扩展设计时行为的类关联。 DesignerAttribute 使类型与设计器关联。 TypeConverterAttribute 使类型或类型成员与类型转换器关联。 EditorAttribute 使类型或类型成员与 UI 类型编辑器关联。 有关 .NET Framework 中特性的更多信息,请参见 组件的设计时特性) 和 特性与设计时支持。
设计器
设计器可以在设计时自定义组件的行为,包括它的外观、初始化以及与用户的交互。 对于选定的组件,设计器可以添加、移除或替换属性浏览器中列出的属性。 设计器可以提供用户定义的方法,这些方法可以链接到某些组件事件,或从自定义菜单命令或 DesignerVerb 中执行。 设计器还可以使用由设计时环境提供的服务。 有关设计器的更多信息,请参见 自定义设计器。
类型转换器
通过实现类型转换器,可在该转换器的既定支持类型和其他数据类型(在这些数据类型之间该转换器可以来回翻译值)之间转换值。 类型转换器还可提供逻辑,以便在设计时能够在属性浏览器内配置属性。 对于类型转换器在属性浏览器中在设计时支持的属性类型,类型转换器可以为该属性提供标准值的列表。 类型转换器还可以生成初始化代码,以便在设计时初始化属性。 有关实现类型转换器的信息,请参见 如何:实现类型转换器。
UI 类型编辑器
UI 类型编辑器可以提供一个自定义用户界面 (UI),以便在设计时编辑属性的值并显示属性值的表示形式。 UI 类型编辑器是特定于具体类型的,并且提供了用户界面,以便在设计时配置该编辑器既定支持的属性类型,或不具有重写特性的派生类型的属性。 UI 类型编辑器可以显示“Windows 窗体”或下拉配置界面以便配置属性。 有关实现 UI 类型编辑器的更多信息,请参见 如何:实现用户界面类型编辑器。
提示
类型转换器和 UI 类型编辑器在设计时和运行时都可使用,而设计器只能在设计时使用。
与设计相关的类型
下表列出了与设计相关的命名空间中的一些重要的类。
System.Drawing.Design
类型 |
说明 |
---|---|
提供用于实现值编辑器的基类。 |
|
提供管理和查询开发环境中的“工具箱”的方法和属性。 |
|
提供工具箱项的基实现。 |
System.ComponentModel.Design
类型 |
说明 |
---|---|
为定义用于创建智能标记面板的项列表的类型提供基类。 |
|
为设计组件提供一个用户界面。 |
|
提供用于生成自定义设计器的基本框架。 |
|
提供对根级设计器视图技术的支持。 |
|
提供一个接口,用于在设计时添加和移除扩展程序提供程序。 |
|
指定一般撤消/重复功能。 |
System.Windows.Forms.Design
类型 |
说明 |
---|---|
提供一个接口,供 UI 类型编辑器用来在设计模式下显示 Windows 窗体,或显示 PropertyGrid 控件中的下拉区域中的控件。 |
|
基设计器类,用于扩展 Control 的设计模式行为。 |
|
基设计器类,用于扩展支持嵌套控件并接收滚动消息的 Control 的设计模式行为,并为其提供根级设计模式视图。 |
System.Windows.Forms.Design.Behavior
类型 |
说明 |
---|---|
在设计器中管理用户界面。 |
|
表示由 BehaviorService 管理的 Behavior 对象。 |
|
管理与用户界面相关的 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 接口允许组件或设计器在设计时筛选由任何组件公开的特性、事件和属性。 ITypeDescriptorFilterService 接口必须由一个类实现;而使用设计模式中设置的组件的 Site 的 AddService 方法,应当可以将该类添加为服务。
ITypeResolutionService 接口允许设计器给项目添加对程序集的引用,按名称获取类型或程序集,以及获取指定程序集的路径。
DesignerActionService 和 DesignerActionUIService 类实现自定义设计器的智能标记功能。 有关更多信息,请参见 Windows 窗体的设计器命令和 DesignerAction 对象模型。
BehaviorService 管理设计器中的用户界面。 它为在设计时操作用户界面元素(例如与鼠标相关的事件、菜单命令和 OLE 拖放操作)提供了一种统一的方式。 有关更多信息,请参见 行为服务概述。
CodeDomComponentSerializationService 类可将一组组件或可序列化的对象序列化到一个序列化存储区中。 有关更多信息,请参见 设计器序列化概述。
请参见
任务
概念
Windows 窗体的设计器命令和 DesignerAction 对象模型