快速业务通道

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(四)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

4.6  类型转换器

类型转换器是什么?它主要完成什么样的功能呢?类型转换器可用于在数据类型之间转换值, 并通过提供文本到值的转换或待选值的下拉列表来帮助在设计时配置属性。如果配置正确,通过使 用 InstanceDescriptor 和System.Reflection 对象来给设计器序列化系统提供生成在运行时初始 化属性的代码所需的信息,类型转换器可以生成属性配置代码。

类型转换器可用于字符串到值的转换,或用于在设计时和运行时数据类型之间的双向翻译。在 宿主(如窗体设计器中的属性浏览器)中,类型转换器允许以文本形式向用户表示属性值,并且可 以将用户输入的文本转换为相应数据类型的值。

大多数本机数据类型(Int32 、String 、枚举类型和其他类型)具有默认的类型转换器,提供 从字符串到值的转换并执行验证检查。默认的类型转换器位于System.ComponentModel 命名空间中 ,名为TypeConverterNameConverter 。当默认功能无法满足需要时,可以扩展类型转换器;当定 义的自定义类型没有关联的类型转换器时,可以实现自定义类型转换器。

4.6.1  系统类型转换器

系统默认提供了许多常用的类型转换器,其中有不少我们在使用控件时已经用到了。本节主要 列举一些常用的转换器,并以其中几个经典的转换器为例说明其使用方式。

4.6.1.1 整型类型转换器

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>

[TypeConverter(typeof(Int32Converter))]
public int IntConverter
{
   //… …
}

转换器类名为Int32Converter ,用于32 位有符号整数对象与其他类型之相互转换的类型转换 。它的展示样式与一般字符串属性完全一样,只是假如我们输入非整型的值,它会提示格式不正确 ,要求重新输入,例如输入一个字符“a ”,会弹出如图4-28 所示的提示输入格式错误的窗口。

图4-28  类型不匹配提示窗口

在实际应用中,像string ,int 等类型的属性不需要我们指定转换器,它会自动关联系统默认 的转换器,即上面的[TypeConverter(…)] 语句可以去掉。

这里要说明的重点是,为属性增加转换器的方法:

[TypeConverter(typeof(Int32Converter))]

该方法在属性上方增加TypeConverter 设计时属性,参数为转换器的类型(系统提供的或自定 义的),后面小节会介绍怎样为特性的属性类型定制自定义转换器。

4.6.1.2  WebColor类型转换器

[TypeConverter(typeof(WebColorConverter))]
public Color WebColorConverter
{
   //… …
}

属性窗口中显示效果如图4-29 所示。

这也是系统提供的一个常用转换器,转换器类为WebColor Converter ,注意单击下拉的颜色选 择面板不是WebColorConverter 提供的,是由默认的颜色编辑器提供(在4.5.1.2 节有讲解), WebColorConverter 主要用于设计或运行时从WebColor 类型到字符串类型的转换。WebColor 与 Color 相比,提供了更多表示颜色格式的类型。

4.6.1.3 控件ID列表类型转换器

如果在设计器中的某几个控件具有关联关系,比如一个控件在运行时要获取另一个控件 的一些 属性值,则可以用控件列表转换器ControlIDConverter 来建立两个控件之间的关联关系。

[TypeConverter(typeof(ControlIDConverter))]
public string TargetControl
{
   //… …
}

转换器类型为System.Web.UI.WebControls.ControlIDConverter ,指定此类型转换器类型的属 性展示效果如图4-30 所示。

图4-30  属性展示效果

在属性列表中,已经列出了设计器中其他几个控件的ID 。在实际应用中,知道了控件的ID , 就可以通过FindControl 方法获取到整个控件了,Find

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号