快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
;server" SolidCoordinate="3,5,8" />

在源代码码下修改属性值,再切换到设计器属性窗口中,也会看到值已经被修改了。

4.6.2.2 集合列表类型转换器

一般常用的自定义类型转换器有以下两类:

值翻译的类型转换器。

提供集合列表展示形式的类型转换器。

上一节我们实现的SolidCoordinate 类的类型转换器就属于值翻译类型转换器,这一节我们来 实现第二种类型的转换器。还是以显示食品列表为例,利用自定义转换器制作一个显示集合列表的 属性,图4-34 是实现后的效果。

下面讲解一下集合转换器的实现,还是以代码为主展开讲解。请见如下代码:

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

public class CustomCollectionPropertyConverter : StringConverter
{
     public override bool GetStandardValuesSupported(ITypeDescriptorContext  context)
     {
       return true;
     }

     public override bool GetStandardValuesExclusive(ITypeDescriptorContext  context)
     {
       return false;
     }

     public override StandardValuesCollection GetStandardValues (ITypeDescriptor Context context)
     {
       string[] strArray = new string[]{"水果","蔬菜","肉食","面食","蛋 类"};
       StandardValuesCollection returnStandardValuesCollection = new     StandardValuesCollection(strArray);
       return returnStandardValuesCollection;
     }
}

上面代码这次没有使用TypeConverter 基类,而是使用的StringConverter 类,把此类作为转 换器基类进行扩展,实现我们需要的功能。StringConverter 提供三个可重写方法,可以在这三个 方法中定义自己的代码逻辑,实现集合列表。三个方法都只有一个ITypeDescriptorContext 类型 的参数,通过此参数可以获取当前容器、当前类实例和属性描述等信息。

方法GetStandardValuesSupported 根据上下文参数对象返回是否支持从列表中选取标准值集, 显然这里我们要设置返回true 。

方法GetStandardValuesExclusive 指定返回标准值的集合是否为独占列表。即如果设置为独占 列表(返回true ),属性值只能从集合下拉列表中选择;反之,如果设置为非独占列表(返回 false ),则属性值既可以从下拉列表中选择,也可以手动输入(即与默认string 类型属性输入 方式相同)。读者可以打开随书光盘中对应的源代码把此属性设置为独占列表模式,看一下效果, 可以加深对该方法的理解。

方法GetStandardValues 是设置集合列表的主要方法,先定义了一个数组:

string[] strArray = new string[] { "水果","蔬菜","肉食","面食","蛋类"  };

然后,以当前数组对象作为参数定义返回值类型集合,并把此集合作为方法返回值。代码如下 :

StandardValuesCollection returnStandardValuesCollection = new 
StandardValuesCollection(strArray);
return returnStandardValuesCollection;

这样系统就会把此返回值集合作为属性下拉集合列表的填充数据。注意这里的返回值集合类型 为System.ComponentModel.TypeConverter.StandardValuesCollection ,是类型转换器专门提供 的一种集合类型。

接下来讲解主控件的实现,其核心源代码如下:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net

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