.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
自定义组件之属性(Property)的性质(Attribute)介绍(二)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

一:属性转换器(TypeConverter

1、  下拉列表框的形式:

要使用下拉列表框的形式的属性我们首先要定义一个属性,在这个例子中我定义了一个字符串类型的属性 FileName

     private string _fileName;

 

     public string FileName

     {

        get { return this._fileName;}

        set { this._fileName=value; }

     }

定义完属性之后,我们还要自己一个属性转换器。那么什么是属性转换器呢?其实在属性浏览器中只能够识别字符串类型,所以我们要通过属性转换器把我们的属性转换成字符串,还要在属性浏览器改变这个字符串之后在把这个字符串转换成我们自己的属性。大家听起来是不是有一些胡涂了?没关系下面我们做一个属性转换器大家就知道了。

因为在本例中用的属性是字符串类型的所以我们要从System.ComponentModel.StringConverter继承一个新的字符串形式的属性转换器。下面就是这段代码和代码中的注释,相信大家一定能够看懂的:

/// <summary>

/// 扩展字符串的转换器(实现下拉列表框的样式)

/// </summary>

public class FileNameConverter:System.ComponentModel.StringConverter

{

 

 

     /// <summary>

     /// 根据返回值确定是否支持下拉框的形式

     /// </summary>

     /// <returns>

     /// true: 下来框的形式

     /// false: 普通文本编辑的形式

     /// </returns>

     public override bool GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext context)

     {

        return true;

     }

 

     /// <summary>

     /// 下拉框中具体的内容

     /// </summary>

     public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)

     {

        return new StandardValuesCollection(new string[]{"File1.bat","File2.exe","File3.dll"});

     }

 

     /// <summary>

     /// 根据返回值确定是否是不可编辑的文本框

     /// </summary>

     /// <returns>

     /// true:  文本框不可以编辑

     /// flase: 文本框可以编辑

     /// </returns>

     public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)

     {

        return true;

       

     }

好了,属性转换器写完了,最后别忘了把这个属性转换器指定到我们刚才所写的属性上哦,代码如下:

[CategoryAttribute("自定义的复杂类型设置(包括自定义类型转换器)"),

     TypeConverterAttribute(typeof(PropertyGridApp.FileNameConverter)),

     ReadOnlyAttribute(false)]

     public string FileName

     {

        get { return this._fileName;}

        set { this._fileName=value; }

     }

编译之后的程序画面如下:

 

 




相关文章

相关软件