C# 用枚举值填充组合框

C# 用枚举值填充组合框,c#,winforms,C#,Winforms,在表单加载(编辑操作)时,我希望选择具有适当值的组合框。这些值的类型为LangEnum 我尝试了comboBoxLanguage.SelectedValue=book.Language但组合始终填充默认值(从枚举列表中的第一个) 更新: 书。语言声明为 public enum EnumLang{英语=1,德语=2,其他=3} 我两个都试过了 comboBoxLang.SelectedItem = (Book.EnumLang)book.Language; 和 comboBoxLang.Sele

在表单加载(编辑操作)时,我希望选择具有适当值的组合框。这些值的类型为LangEnum

我尝试了
comboBoxLanguage.SelectedValue=book.Language但组合始终填充默认值(从枚举列表中的第一个)

更新:

书。语言声明为

public enum EnumLang{英语=1,德语=2,其他=3}

我两个都试过了

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

comboBoxLang.SelectedItem = book.Language;
而且什么都不起作用(默认的第一个值(英语)总是设置的),值得一提的是,在调试模式手册上。语言设置为德语或其他语言,但在combobox上选择了英语。

我觉得不错! 我也在做同样的事情,你确定
book.Language
string与列表中的一项完全匹配吗

在您尝试
SelectedValue
之前是否填充了列表?

最好尝试:

comboBoxLanguage.SelectedItem = book.Language;

// or even

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

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

使用SelectedItem对我来说效果很好:

comboBoxLanguage.SelectedItem = book.Language;

您没有告诉book
是什么类型的变量:它是
Langeum
类型吗?或者它是一个具有
语言
属性的类?(在最后一种情况下:
语言
属性的类型是什么?)

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

comboBoxLanguage.SelectedItem=(LangEnum)book.Language


此外,如果在WinForm事件中填充combobox,还应注意它们的触发顺序。查看表单更多信息。

组合的
值成员是什么?
?您说您正在尝试在表单的
加载
事件中设置组合框的值。您是否尝试在代码的另一点中设置组合框项?例如,在窗体的
显示的
事件中,还是在窗体的构造函数中调用
InitializeComponent()
方法之后?