自定义组件之属性(Property)的性质(Attribute)介绍(二)
点击次数:20 次 发布日期:2008-11-26 23:57:47 作者:源代码网
|
源代码网推荐 源代码网推荐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; } 源代码网推荐 源代码网推荐 } 源代码网推荐 源代码网推荐编译之后的程序画面如下 源代码网推荐 源代码网供稿. |
