我有一个带有组合框控件的表单。在表单加载事件处理程序中,我将组合框的数据源属性设置为枚举值。
public class myEnum
{
public static myEnum DOCUMENTO =
new myEnum("0", "DOCUMENTO");
public static myEnum BLOCCATO =
new myEnum("1", "BLOCCATO");
public static myEnum NONBLOCCATO =
new myEnum("2", "NONBLOCCATO");
static myEnum() {}
public myEnum (string code,
string descCaptionCode)
: base(code, descCaptionCode){}
public myEnum() {}
}
private void loadLockStateType()
{
List<myEnum> values = new List<myEnum>();
values.Add(myEnum.DOCUMENTO);
values.Add(myEnum.BLOCCATO);
values.Add(myEnum.NONBLOCCATO);
myCombo.DataSource = values;
}
这很好用,我填写表单然后点击保存。 我的问题是当我想用保存的数据重新加载此表单时。我可以把所有信息都放回来,除了我不确定如何从我提取的数据中的枚举值设置组合框。
我试过这个
myCombo.SelectedItem = elemento.ReadOnly != null ? elemento.ReadOnly : LockStateObjectEnum.DOCUMENTO.Code;
其中elemento是一个具有String字段的类,该字段表示comboBox中可能的3个值之一
public Class Elemento
{
...
public string ReadOnly
{
get;
set;
}
...
}
但它不起作用。它很好地读取了elemento中的值,例如elemento.ReadOnly = "2"
,但组合总是选择第一个元素myCombo.SelectedItem={0}
。我也尝试了myCombo.SelectedValue
,但它在一个异常中返回:InvalidOperationException。
我认为问题是组合加载了一个枚举,我试图用字符串设置一个值,但我不能把枚举也放在Elemento类中。
我能怎么做?
由于
答案 0 :(得分:1)
尝试Text而不是SelectedItem
myCombo.Text = elemento.ReadOnly != null ? elemento.ReadOnly : LockStateObjectEnum.DOCUMENTO.Code;