使用枚举值填充组合框

本文关键字:组合 填充 枚举 | 更新日期: 2023-09-27 18:36:01

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

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

更新:

书。语言声明为

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

我都试过了

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

并与

comboBoxLang.SelectedItem = book.Language;

没有任何效果(默认的第一个值(英语)始终设置),值得一提的是调试模式书。"语言"设置为"德语"或"其他",但在组合框中选择了"英语"。

使用枚举值填充组合框

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

在您

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

最好试试:

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

您可能希望设置 ValueMember 属性以获取或设置SelectedValue

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

comboBoxLanguage.SelectedItem = book.Language;

你没有告诉book是什么样的变量:它是LangEnum类型吗?还是具有Language属性的类?(在最后一种情况下:Language属性的类型是什么?

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

comboBoxLanguage.SelectedItem = (LangEnum)book.Language;

此外,如果要在 WinForm 事件中填充组合框,则还应关注它们的触发顺序。看看这个SO问题表格更多信息。