最近有一個程序需要在一個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;
}