在表单加载(编辑操作)上我想用合适的值选择组合框。这些值的类型为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设置为德语或其他,但在组合框中选择了英语。
答案 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表格更多信息。