快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
e 类型的对象, 如下所示:

return new SolidCoordinate((int)obj2,(int)obj3,(int)obj4);

CreateInstance 一般用于不可变但希望为其提供可变属性的对象。

接下来方法GetPropertiesSupported 表示使用指定的上下文返回该对象是否支持单独设置属性 功能。如果返回true ,则属性窗口中属性布局如图4-32 所示。如果返回false ,则属性布局如图 4-33 所示。

图4-32  返回true 时的属性布局

图4-33  返回false 时的属性布局

方法GetProperties 是对GetPropertiesSupported=true 时的属性列表的实现逻辑。代码就一 句:

return TypeDescriptor.GetProperties(typeof(SolidCoordinate),attributes).  Sort(new string[] { "X","Y","Z" });

取得SolidCoordinate 的属性,并以attributes 数组为筛选条件,取得属性后依次以X ,Y , Z 的顺序进行排序,最后返回排序后的PropertyDescriptorCollection 类型的对象。

类型转换器类SolidCoordinateConverter 已经讲解完毕,可能一些重载方法理解起来比较费劲 ,在开始学习只要理解CanConvertFrom ,CanConvertTo ,ConvertFrom,ConvertTo 就可以了,最 常用的也是这几个方法;其他的几个重载方法GetCreateInstanceSupported ,CreateInstance , GetPropertiesSupported ,GetProprties 可以在开发过程中逐步理解,这里只是说明它们的功能 ,事实上对SolidCoordinate 转换器示例只需要重写CanConverterFrom,ConvertFrom 等前面几个 方法就够了。

最后实现主控件,代码如下:

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

[DefaultProperty("SolidCoordinate")]
[ToolboxData("<{0}:SolidCoordinateTypeConverterControl runat=server></ {0}:SolidCoordinateTypeConverterControl>")]
public class SolidCoordinateTypeConverterControl : WebControl
{
   SolidCoordinate solidCoordinate;
   public SolidCoordinate SolidCoordinate
   {
     get
     {
       if (solidCoordinate == null)
       {
         solidCoordinate = new SolidCoordinate();
       }
       return solidCoordinate;
     }
     set
     {
       solidCoordinate = value;
     }
   }
   //… …
}

主控件仅包含一个SolidCoordinate 类型的属性。在属性上面并没有如下代码:

[TypeConverter (typeof(SolidCoordinateConverter))]

关联类型转换器的语句,因为在SolidCoordinate 类中指定了,这里就不必再指定。在属性前 面和属性类型前面指定转换器的作用是相同的,但它们有两点区别:

在类中指定类型转换器一般用于一对一的时候,即SolidCoordinateConverter 就是只用于 SolidCoordinate 类型的转换器。

在属性前面指定转换器一般用于此属性可能(不是必须)使用某个转换器的时候,换句话说就 是此属性或许还使用其他的转换器,或不需要转换器;或者此属性的类型为系统类型,不是我们定 义的类型,这时候我们也没有机会为类指定转换器,只能在属性上指定转换器,下节讲的集合列表 类型转换器就是如此。另外,这样指定的好处是更加灵活。

编译主控件,并将控件放置到页面中,在页面设计器属性窗口就可以看到我们已经实现的转换 器属性,如图4-33 所示。

然后,切换到源代码视图,则会看到如下代码:

<cc1:CustomeTypeConverterControl ID="CustomeTypeConverterControl1"  runat= "

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号