向“属性”窗口提供标准值列表的类型转换器
像省份这样的属性,为了方便用户填写,我们往往做成下拉框形式,一个省份里面又有城市,我们往往列出一部分,如果其中数据不符合用户要求的话,用户还可以自己输入,使用类型转换器转换器也可以做到这一点.
实现这一效果你需要重写以下方法,我们添加一个属性喜欢的游戏的名称
因为属性为String类型,可以直接从StringConverter 派生
示例三
然后与相关属性关联起来
好了,.下面我们看一下效果,如下图,你可以选择下拉框的值,也可以自己手动输入,跟枚举类型很相似,但枚举类型无法自己修改值.
像省份这样的属性,为了方便用户填写,我们往往做成下拉框形式,一个省份里面又有城市,我们往往列出一部分,如果其中数据不符合用户要求的话,用户还可以自己输入,使用类型转换器转换器也可以做到这一点.
实现这一效果你需要重写以下方法,我们添加一个属性喜欢的游戏的名称
因为属性为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;
}
}
{
//返回此对象是否支持可以从列表中选取的标准值集
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;
}
}
[Description("喜欢的游戏")]
public String Game
{
get
{
return game;
}
set
{
game = value;
}
}
好了,.下面我们看一下效果,如下图,你可以选择下拉框的值,也可以自己手动输入,跟枚举类型很相似,但枚举类型无法自己修改值.