在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)

自定义控件(十一)可折叠的属性(一) 《在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)》(http://blog.youkuaiyun.com/smallfools/archive/2010/06/03/5645389.aspx)中用到的源代码 立即下载

 


本文目的:

创建一个在属性窗口中可折叠的属性

 


 

 

    什么是在属性窗口中可折叠的属性?废话少说,先上图,看看图一马上就明白了。

图一

 

    在大多数服务器控件的属性窗口中可以看到如上图所示的Font属性,这个属性是用于设置控件中文字的字体。由于文字字体包括是否加粗、是否斜体、使用什么字体、字体大小是多少等内容,因此,可以把这个内容以子属性的方式放在Font属性下,而这个Font属性就是一个在属性窗口中可折叠的属性。

 

    我们接着《在VS2008中创建自定义控件(九)添加属性》来,现在我们要添加一个唐诗作者的属性,由于古人除了姓名之外,还有字、号,所以,我们设计唐诗作者这个属性要包含三个子属性:姓名、字、号——明眼人一看就明白了,“作者”这个属性就是一个类,因此,我们先创建一下作者类,如下所示。

 

    创建了一个“作者”类之后,为唐诗类添加一个作者属性,该属性就是刚才创建的类,如以下代码所示。

 

    添加完“作者”属性之后,我们在自定义控件的属性窗口中可以看到PoetryAuthor属性选项,如下图所示。

图二

 

    切换到aspx文件的源代码页,我们也可以看到在源代码页中看到PoetryAuthor属性,如下图所示。

图三

 

 

    值得说明的是,由于“姓名”、“字”、“号”属性都是“作者”类下的属性,而作者是唐诗属性,所以,在源代码页中是不存在name、CourtesyName、SelfTitled属性的,如下图所示。

图四

 

    因为“姓名”、“字”和“号”属性是“作者”的属性,所以可以在cs页面中设置该属性,如下图所示。

图五

 

    那么,要怎么才能在aspx页面的源代码中设置“姓名”、“字”和“号”属性呢?这个时候,我们就要在“作者”属性上添加一个特性了,如以下代码所示。

 

 

    在以上代码中,为PoetryAuthor属性加上了一个DesignerSerializationVisibility特性,该特性主要作用是说明该项控件的属性是否在网页的源代码中显示。DesignerSerializationVisibility()方法的参数有以下三种:

    1、DesignerSerializationVisibility.Hidden:该参数说明在代码生成器中不生成属性代码。如果在PoetryAuthor属性的特性中设为该值,而在aspx的源文件中将看不到PoetryAuthor属性,也就是在图三中看不到PoetryAuthor选项。

    2、DesignerSerializationVisibility.Visible:该参数说明在代码生成器中生成属性代码。

    3、DesignerSerializationVisibility.Content:该参数说明在代码生成器中产生的是属性内容的代码,而不是属性本身的代码。

 

    在本例中,我们使用的第三种参数,让代码生成器中产生属性内容的代码。由于PoetryAuthor属性是一个类,所以,VS会显示这个类中的属性,并使用“-”对它们进行连接。如下图所下。

图六

 

    需要注意的是,DesignerSerializationVisibility.Content特性只影响aspx源代码中的代码生成器中显示的属性,而不会影响该类的属性。换句话而言,上图中的PoetryAuthor-CourtesyName、PoetryAuthor-Name和PoetryAuthor-SelfTitled属性是不存在的,只是PoetryAuthor属性下三个子属性的表示方式而已。因此,在cs文件中,对PoetryAuthor属性的设置还是如图五所示。

 

    然而,在经过上一步之后,我们只是让自定义控件在源代码中支持类的属性的设置了,但是在属性窗口,PoetryAuthor属性还是没有达到可折叠的效果。

    为什么会没有可折叠的效果呢?这里就要先介绍一下属性窗口中的“类型”了。

    我们为控件定义的每个属性都是有一个“类型”的,例如前面定义的唐诗的内容、标题属性,它的类型都是字符串型(string);唐诗分类是枚举型等,当然,还有我们常用到的整型、日期型、color型等。VS的属性窗口会自动对这些类型进行识别。如果我们设置的属性值与属性类型不相符,那么VS将会报错。而在为属性赋值时,如果类型不同话,可以使用类型转换器将类型转换成相同之后再进行赋值。

    例如,你将颜色设为红色的话,就必须先要将“red”这个字符串转换成Color类型,再赋值给颜色属性。

    之所以在属性窗口中PoetryAuthor属性没有显示出折叠效果,这是因为,PoetryAuthor属性是一个类,而“类”并不是属性窗口中可以默认知道的类型。因此,我们还要对PoetryAuthor属性的类型进行转换,这个时候,我们就要为PoetryAuthor属性再添加一个特性,如以下代码所示。

 

 

    在以上代码中,关键代码是“[TypeConverter(typeof(ExpandableObjectConverter))]”,如果属性是一个类的话,可以直接使用ExpandableObjectConverter类来进行转换。

    生成解决方案后,可以在属性窗口看到PoetryAuthor属性成了一个可折叠的属性了。如下图所示。

 

===================================================================

原创不容易,转载请注明出处:http://hi.youkuaiyun.com/smallfools

相关链接:

  1. 在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目
  2. 在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
  3. 在VS2008中创建自定义控件(三)在网页中添加自定义控件
  4. 在VS2008中创建自定义控件(四)为自定义控件添加默认值
  5. 在VS2008中创建自定义控件(五)修改tagprefix
  6. 在VS2008中创建自定义控件(六)创建完全自定义控件
  7. 在VS2008中创建自定义控件(七)自定义控件的中常用到的特性
  8. 在VS2008中创建自定义控件(八)输出HTML代码
  9. 在VS2008中创建自定义控件(九)添加属性
  10. 在VS2008中创建自定义控件(十)添加枚举型属性
  11. 在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
  12. 在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
  13. 在VS2008中创建自定义控件(十三)添加内镶属性
  14. 在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级
  15. 在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

===================================================================

    本文源代码可以http://download.youkuaiyun.com/source/3265963在下载。

 

 

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改? YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是 阅读详情

相关推荐

LAMMPS模拟新合金没势函数?手把手教你用`pair_style hybrid`混合势函数(附FeCMnSiTi案例)

本文详细介绍了在LAMMPS中如何使用`pair_style hybrid`混合势函数模拟新型高熵合金(如FeCMnSiTi),解决缺乏现成势函数的问题。通过实战案例,涵盖参数查找、命令编写、错误排查等关键步骤,特别适合处理多组元体系的复杂相互作用。文章还提供了EAM势函数与LJ势的组合技巧,帮助研究者准确模拟合金性能。

weixin_30635053的博客 243

自定控件设置控件属性用到的一些类

DesignerSerializationVisibility: 自定义控件时,在属性中设置DesignerSerializationVisibility为Hidden,可以保持组件设计时的值,不在拖拽组件时InitializeComponent()方法中再重新生成。 MSDN中的详细介绍: 字段   名称 说明 Content 指定

编织梦想 977

Python实现高光谱图像生成与增强:从RGB到多光谱转换(附完整代码)

本文分享一个基于Python的实用工具,能够将普通RGB图像转换为模拟高光谱图像,并进一步生成增强的彩色可见图像。为了直观展示图像细节,程序通过对特定波段的组合,生成了一幅增强的 RGB 彩色图像。该函数的主要目标是将一张普通的 RGB 图像转换为包含多个波段的高光谱图像。通过该函数,我们能直观地看到高光谱图像经过波段组合后所得到的彩色图像效果。通过以上代码,我们可以实现对海量图像数据的自动化处理,极大地提升工作效率。已附在文中,欢迎下载测试!通过以上步骤,我们可以生成一幅包含多个光谱波段信息的图像。

m0_74824642的博客 3665

设计时属性:设计时属性相关类型

属性的设计时特性.NET Framework为控件设计时属性提供了很多丰富的类,这些属性的功能非常灵活,控制范围广泛,比如可以控制该属性在属性窗口中的显示模式,如:是否在属性窗口中显示该属性,也可以指定此属性必须接收值类型描述,按组分类等,也可以控制文本的标记呈现格式等,甚至可以自己定义一个属性类,实现自己想实现的功能。下面讲一下常用的.NET Framework的属性类对控件的支持功能。Bi

wonsoft的专栏 3095

使用CAPL实现DoIP刷写

本文介绍了使用CAPL实现基于DoIP协议的ECU刷写方法,包含完整源码。

qq_56033302的博客 2758

基于51单片机的通讯聊天系统

通过编写51单片机通讯聊天程序,掌握51单片机的各个模块的知识点和运用C语言编写51单片机的能力。用51单片机与口袋开发板设计实现一个单片机与电脑串口助手实现通讯功能的程序。程序的主要功能如下: 1 OLED初始化显示Welcome to Bluetooth communication! 字符串。 2 程序开始时处于接收信息模式, 电脑串口助手发送信息时,将从初始化字符第一个开始显示,电脑串口助手发送信息后,蜂鸣器响铃2秒左右。 3 每次同时按下左右键时,可以轮流切换接收/发送信息模式 4 在发送信息模式时

m0_47419053的博客 3637

C#中的自定义控件中的属性、事件及一些相关特性的总结(转)

摘要: C#中的自定义控件中的属性(Property)、事件(Event)及一些相关特性(Attribute)的总结 今天学习了下C#用户控件开发添加自定义属性的事件,主要参考了MSDN,总结并实验了一些用于开发自定义属性和事件的特性(Attribute)。 在这里先说一下我的环境: 操作系统:Windows7旗舰版(Service Pack 1) VS版本:Microsoft Visual Studio Ultimate 2012,版本 11.0.50727.1 RTMREL .NET Framework

qq_39300041的博客 6447

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657

C#-winform自定义控件在工具箱中显示和属性在属性面板中显示

【C#】winform自定义控件在工具箱中显示和属性在属性面板中显示 转载JimCarter最后发布于2019-02-12 17:35:07阅读数 2923收藏 展开 在开发自定义控件件时,有好些Design属性是要使用的,如ToolboxItem,ToolboxBitmap,Category,Description等等,不知道这些属性其实也可以将控件搞出来,不过,知道了,会令...

cxu123321的博客 1943

Python爬虫实战:高德地图POI信息爬取(餐馆/加油站等),附选址分析技巧

高德API配置AMAP_KEY = "你的高德API Key" # 替换成自己的Key# 爬取参数CITY = "成都" # 城市DISTRICTS = ["锦江区"] # 区域,可添加多个(比如["锦江区", "武侯区"])KEYWORDS_LIST = ["川菜馆", "加油站"] # 要爬取的POI类型TYPES = {"川菜馆": "050101", # 餐饮服务→中餐→川菜馆(高德POI分类编码)"加油站": "110100" # 交通设施→加油站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2467

STM32实战开发(121):基于STM32的智能电导率检测系统设计与实现

STM32系列是由意法半导体(STMicroelectronics)推出的32位微控制器。STM32系列基于ARM Cortex-M处理器架构,具有高性能、低功耗、丰富的外设接口和强大的开发支持库。STM32的低功耗特性使其在嵌入式系统中非常受欢迎,特别是在便携式设备和传感器网络中。

2201_76125393的博客 1041

C#用户控件的创建

频繁要用到的控件,在系统控件或者第三方控件又找不到合适的,就做成用户控件,节约时间,方便使用。 这里以自定义按钮控件为例,介绍用户控件创建过程。 1. 新建windows窗体控件库项目。 2. 创建成功后,即可看到控件的原始形态。将UserControl1类重命名为MyButton。 3. 这里我们要实现一个自定义的按钮,按钮

已被格式化的叔叔 7011

Linux内核驱动模型--PCIe(PCI Express)驱动​​

本文系统介绍了Linux内核中PCIe驱动的设计与实现。首先从架构定位入手,指出PCIe驱动基于PCI子系统扩展支持高速、低功耗特性。核心数据结构struct pci_driver包含设备匹配表id_table、生命周期函数probe/remove等关键组件。文章详细解析了驱动与设备的绑定流程、资源管理机制,并重点阐述了MSI-X中断、电源管理、热插拔和多队列等高级特性实现方案。最后提供了lspci、dmesg等调试工具的使用方法,总结了PCIe驱动在支持高性能设备中的关键作用。全文通过架构设计、核心结构、

amy_mhd的博客 424

在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)

本文目的:让属性窗口中的修改同步到aspx源代码视图    在添加了可折叠的属性之后,我们可以重写RenderContents()方法,以便输出唐诗的作者信息,如以下代码所示。    下面,我们在自定义控件里添加上作者属性值。    可是,在添加作者属性值时,发现了一个问题,当我们在属性窗口里添加了属性值之后,在aspx文件的源代码窗口中并没有同时添加作者属性的内容,如下图所示。    由于aspx中的源代码没有同步添加作者属性值,所以,在生成后的网页中,也看不到作者信息,如下图所示。    当然,我们也可

没有标题,只有问题 3508

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

在VS2008中创建自定义控件(十三)添加内镶属性

    在添加了可折叠的属性之后,我们可以重写RenderContents()方法,以便输出唐诗的作者信息,如以下代码所示。/// /// 呈现控件 /// /// protected override void RenderContents(HtmlTextWriter output) { string OutText = ""; //诗名 if (!String.IsNullOrEmpty(Title)) { OutText +=

没有标题,只有问题 2750

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

在VS2008中创建自定义控件(十)添加枚举型属性

本文目的:在自定义控件中添加一个枚举型的属性    什么是枚举型的属性?看一下下图就明白了。    上图是一个TextBox服务器控件的BorderStyle属性。在属性对话框中,该属性值是通过下拉列表框的形式出现的,我们只能选择下拉列表框中的选项,不能自己输入内容——这就是枚举型属性的特点。    现在假设有一个自定义控件,这个自定义控件用于输入图书相关的信息,图书信息中有一项是图书种类,这个图书种类的只能在小说、青春、历史、保健四个选项中选择。那么,这个图书种类就是一个枚举型的属性。    首先,我们在

没有标题,只有问题 5272

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目

    首先声明,用户控件和自定义控件是不同滴。用户控件通常都是使用现有的控件进行组合,从而实现一些常用功能,比如说文本框、密码框、验证框和按钮的组合,从而实现一些常用的登录功能。而自定义控件不同,自定义控件一般由服务器控件的基类派生出来的类,更酷的是,自定控件可以和服务器控件一样,添到工具箱里,并从工具箱中直接拖到网页中使用。如下图所示。    在上图中所以看到工具箱中有一个名为“YundaoControls组件”的选项卡,该选项卡下的那两个控件就是自定义控件。那么,要怎么样才能创建自定义控件,又要怎么样

没有标题,只有问题 1万+

在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

    这是一个很讨厌的情况,讨厌到我都不知道是因为什么原因,刚才还好好的自定义控件,在使着使着会出现这么一个问题,如下图所示。    一开始,一直以为是我的错,结果,后来发现是微软的错。最后的解决方式是,去http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=KB957507&DownloadId=5273下载VS90SP1-KB957507-v2-CHS-x86.exe补丁,或直接http://www.

没有标题,只有问题 5781

在VS2008中创建自定义控件(四)为自定义控件添加默认值

    在前面,我们添加了一个自定义控件,为了方便起见,这个自定义控件仅仅只是继承了TextBox服务器控件的属性和方法,并没有其他功能。事实上,添加的自定义控件不可能这么没有个性的,下面,我们为自定义控件添加一个默认值。    打开yundaoTextBox.cs文件,添加一个构造函数,如下所示。public yundaoTextBox() { //设置属性的缺省值 this.Text = "测试"; }     在这个构造函数中,this代表的是自定义控件本身,而Text也就是继

没有标题,只有问题 4076

在VS2008中创建自定义控件(五)修改tagprefix

    在《在VS2008中创建自定义控件(三)在网页中添加自定义控件》介绍过,将自定义控件拖到网页中时,VS会自动添加@Register 指令将别名与命名空间和类名关联起来。对于开发者来说,这很方便,可是在默认情况下,VS会将别名添加成“cc1”、“cc2”等别名,而这些别名既不好看,又不规范。那么我们可不可以指定别名呢?    答案是肯定的,我们只要打开自定义控件的cs文件,然后在命名空间上加上以下即可。[assembly: TagPrefix("YundaoControls", "myControls

没有标题,只有问题 3607

在VS2008中创建自定义控件(六)创建完全自定义控件

    在前面介绍的创建自定义控件是直接继承了TextBox服务器控件的自定义控件,事实上,asp.net中允许创建一个完全的自定义控件,也就是不从任何一个服务器控件中继承的自定义控件。    首先,我们在自定义控件项目中添加一个新的“asp.net服务器控件”,命名为“myCustomControl.cs”,如下图所示。    添加完之后,VS会自动为myCustomControl.cs添加一些代码,如下图所示:    从上图中我们可以看出,在默认情况下,VS让自定义控件继承了WebControl类,这个

没有标题,只有问题 4745

在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级

本文目的:1、了解内镶属性和内联属性的优先级谁高谁低。2、将内联属性从属性中移出    在《在VS2008中创建自定义控件(十三)添加内镶属性》中介绍过什么是内镶属性,以及怎么样添加内镶属性。那什么是内联属性呢?内联属性也就是前面我们在《在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)》和《在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)》介绍过的使用“-”联接符的属性,如下图所示。    在《在VS2008中创建自定义控件(十三)添加内镶属性》中,我们添加了

没有标题,只有问题 2379
上一篇: 在VS2008中创建自定义控件(十)添加枚举型属性
下一篇: 在VS2008中创建自定义控件(十三)添加内镶属性
smallfools
博客等级 码龄1天 176粉丝 76原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值