使用枚举值填充组合框

时间:2013-10-18 12:29:35

标签: c# winforms

在表单加载(编辑操作)上我想用合适的值选择组合框。这些值的类型为LangEnum。

我尝试使用comboBoxLanguage.SelectedValue = book.Language;但是combo总是使用默认值填充(首先来自枚举列表)。

更新

book.Language被宣布为

public enum EnumLang { English = 1, German = 2, Other = 3 };

我尝试了

comboBoxLang.SelectedItem = (Book.EnumLang)book.Language;

comboBoxLang.SelectedItem = book.Language;

并且没有任何作用(默认第一个值(英语)总是设置),值得一提的是在调试模式book.Language设置为德语或其他,但在组合框中选择了英语。

4 个答案:

答案 0 :(得分:1)

看起来对我来说是正确的! 我正在做同样的事情,你确定book.Language字符串与列表中的某个项目完全匹配吗?

在您尝试SelectedValue之前填写的列表是什么?

答案 1 :(得分:0)

更好的尝试:

comboBoxLanguage.SelectedItem = book.Language;

// or even

comboBoxLanguage.Text = book.Language.ToString(); //should work

您可能需要设置ValueMember属性以获取或设置SelectedValue

答案 2 :(得分:0)

使用SelectedItem对我很好:

comboBoxLanguage.SelectedItem = book.Language;

答案 3 :(得分:0)

您没有说出book是什么类型的变量:它是LangEnum类型的?或者它是一个Language属性的类? (在最后一种情况下:Language属性的类型是什么?)

如果book类型为LangEnum,您可以使用SelectedItem属性,正如其他人所说的那样。 (如果您需要有关两个组合框属性之间差异的更多信息,请检查this SO question) 否则你可能需要演员:

comboBoxLanguage.SelectedItem = (LangEnum)book.Language;

此外,如果你在WinForm事件中填充你的组合框,你也应该关心它们被触发的顺序。请查看this SO question表格更多信息。