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 滚轮可放大/缩小';}" οnclick="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" οnlοad="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 滚轮可放大/缩小';}" οnclick="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" οnlοad="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技术后盾!赶快加入!

转载于:https://www.cnblogs.com/HeroBeast/archive/2008/01/20/1046519.html

Windows 窗设计时结构相关推荐

  1. Windows 窗体设计器中的设计时错误

    在用 VS.NET进行窗体设计的时候,经常会遇到这样的问题:我们需要在构造函数或者在OnLoad事件中进行自己的一些初始化操作,比如连接一个数据库.调用一个资源文件或者后期绑定一个组件.如果代码通过编 ...

  2. 自定义UserControl的属性为什么不能在设计时显示在属性窗口中

    自定义UserControl的属性为什么不能在设计时显示在属性窗口中 自定义UserControl的属性为什么不能在设计时显示在属性窗口中 http://www.cnblogs.com/dudu/ar ...

  3. Windows系统程序设计之结构化异常处理

    标 题: [原创]Windows系统程序设计之结构化异常处理 作 者: 北极星2003 时 间: 2006-09-20,20:21:28 链 接: http://bbs.pediy.com/showt ...

  4. 【翻译】SILVERLIGHT设计时扩展(注:内容超长,请用IE浏览)

    原文链接:Silverlight Design Time Extensibility --By Justin Angel (Microsoft Silverlight Toolkit Program ...

  5. Programming Windows程式开发设计指南-第三章 窗口和消息

    3. 窗口和消息 在前两章,程序使用了同一个函数MessageBox来向用户输出文本.MessageBox函数会建立一个「窗口」.在Windows中,「窗口」一词有确切的含义.一个窗口就是屏幕上的一个 ...

  6. wpf控件设计时支持(1)

    wpf控件设计时支持(1) 原文:wpf控件设计时支持(1) 这部分内容几乎是大家忽略的内容,我想还是来介绍一下. 本篇源码下载 1.属性元数据 在vs IDE中,在asp.net,winfrom等开 ...

  7. 有始有终,设计一个结构合理的下载模块

    完成开发任务的同时,我们总希望自己能够交付高质量的代码.代码质量的测度有很多方法,可扩展性.可复用性是其中的两项指标.设计模式的理论能够非常有效地指导代码设计,但是光谈这些理论是非常抽象的,本文针对下 ...

  8. logisim设计alu设计报告_【新】PowerBI 报告设计思想 结构布局篇

    引子 很多战友问过一个问题,那就是如何设计一个PowerBI报告,对这个问题,需要一个系统化的回答,它足可以形成一个课程,该课程将完全讲述如何纯纯地构造一个PowerBI的报告,不包括对任何可视化元素 ...

  9. PEOPEO中国区总经理于景:当我谈交互设计时我谈些什么

    嘉宾介绍 于景,软件工程硕士,自幼酷爱绘画,十六岁进入艺术院校专攻设计,在工业设计.多媒体互动艺术创作.视觉传达设计和服装设计等领域颇有造诣,先后创办了呜呀.NIGON.等设计公司和设计品牌. 199 ...

最新文章

  1. PMCAFF | 聊聊阅读类app的交互
  2. 一、 Log4E插件下载
  3. pytorch 画loss曲线_Pytorch使用tensorboardX可视化。超详细!!!
  4. mysql 8服务配置文件my.ini 不生效_2、mysql的启动选项和配置文件介绍
  5. /usr/bin/python^M: bad interpreter: No such file or directory
  6. 腾讯音乐计划以介绍形式在港交所主板二次上市
  7. struts2+spring+mybatis简单配置
  8. [转载] Python杂谈 | (6) numpy中array()和asarray()的区别
  9. 《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.3 直接映射高速缓存...
  10. 体验式培训之“盲人与哑巴”
  11. 如何在Microsoft Word里面插入图片作为背景/封面?
  12. js给页面添加随机像素噪声背景
  13. 如何用VBA实现格式刷的功能?
  14. ChemDraw中如何旋转结构
  15. Mars3D开发基础学习:三维场景 Map
  16. 官方出品!手把手教你在华为HMS平台开发App
  17. Visio画出简单的拓扑图
  18. linux下的扫描软件,4个用于Linux系统的扫描软件 - 爱绿豆
  19. 期货止损篇2:ATR止损,高手都在悄悄用的止损利器
  20. 利用计算机卸载,为什么我不能在计算机上卸载软件! !

热门文章

  1. “如何写好科技论文之我见”结束语-如何写好科技论文之我见(十)
  2. BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
  3. r语言逻辑向量相加_R语言基础教程——第3章:数据结构——向量
  4. java去掉字符串中前后空格函数_JAVA中去掉字符串空格各种方法详解
  5. day60 Pyhton 框架Django 03
  6. BZOJ 1977 [BeiJing2010组队]次小生成树 Tree
  7. 用C#操作word替换字符,用spire
  8. Exynos4412裸机开发 —— 看门狗定时器
  9. MySQL 多实例给root用户创建密码
  10. python时间转换