如何使用表示值的字符串设置组合值

时间:2014-05-13 09:55:47

标签: c# winforms combobox

我有一个带有组合框控件的表单。在表单加载事件处理程序中,我将组合框的数据源属性设置为枚举值。

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类中。 我能怎么做?

由于

1 个答案:

答案 0 :(得分:1)

尝试Text而不是SelectedItem

myCombo.Text = elemento.ReadOnly != null ? elemento.ReadOnly : LockStateObjectEnum.DOCUMENTO.Code;