NRabbit

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
向“属性”窗口提供标准值列表的类型转换器

像省份这样的属性,为了方便用户填写,我们往往做成下拉框形式,一个省份里面又有城市,我们往往列出一部分,如果其中数据不符合用户要求的话,用户还可以自己输入,使用类型转换器转换器也可以做到这一点.

实现这一效果你需要重写以下方法,我们添加一个属性喜欢的游戏的名称
因为属性为String类型,可以直接从StringConverter 派生

示例三
 public class GameConverter : StringConverter 

    
{
        
//返回此对象是否支持可以从列表中选取的标准值集
        public override bool GetStandardValuesSupported(
                           ITypeDescriptorContext context)
        
{
            
return true;
        }

       
//返回下拉框集合类
       public override StandardValuesCollection
                     GetStandardValues(ITypeDescriptorContext context)
       
{
           
return new StandardValuesCollection(new string[]{"传奇"
                                                     
"魔兽世界"
                                                     
"龙与地下城"}
);
       }

       
//标准值的集合是否为独占列表
       
//默认为flase,为true则表示无法修改列表值
       public override bool GetStandardValuesExclusive(
                           ITypeDescriptorContext context)
       
{
           
return false;
       }

    }


然后与相关属性关联起来

[TypeConverter(typeof(GameConverter))]
        [Description(
"喜欢的游戏")]
        
public String Game
        
{
            
get
            
{
                
return game;
            }

            
set
            
{
                game 
= value;
            }

        }

好了,.下面我们看一下效果,如下图,你可以选择下拉框的值,也可以自己手动输入,跟枚举类型很相似,但枚举类型无法自己修改值.

posted on 2008-08-15 00:15  kevin.nrabbit  阅读(209)  评论(0编辑  收藏  举报