最近有一个程序需要在一个DevExpress的Grid中使用ComboBoxEdit,同时需要初始化好枚举值。
我之前有定义一个类专门用作于ComboBox.Items的项
/// <summary>
/// 选择项类,用于ComboBox或者ListBox添加项
/// </summary>
public class ListItem
{
private string id = string.Empty;
private string name = string.Empty;
private object tag = null;
public ListItem(string sid, string sname)
{
id = sid;
name = sname;
}
public ListItem(string sid, string sname,object otag)
{
id = sid;
name = sname;
tag = otag;
}
public override string ToString()
{
return this.name;
}
public string Id
{
get
{
return this.id;
}
set
{
this.id = value;
}
}
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
public object Tag
{
get {
return this.tag;
}
set
{
this.tag = value;
}
}
}
但是如下使用时,选择后会抛出一个对象必须实现 IConvertible的错误
注: prop_values是一个List<ListItem>对象
RepositoryItemComboBox editor = pgProperty.RepositoryItems.Add("ComboBoxEdit") as RepositoryItemComboBox;
editor.Items.AddRange(prop_values.ToArray());
查阅了资料后发现,RepositoryItemComboBox 中的项需要实现IConvertible接口,否则的话要用如下语句来解决:
editor.ParseEditValue += new ConvertEditValueEventHandler(repositoryItemComboBox_ParseEditValue);
void repositoryItemComboBox_ParseEditValue(object sender, ConvertEditValueEventArgs e)
{
e.Value = e.Value.ToString();
e.Handled = true;
}