0

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

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

更新:

book.Language 被声明为

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

我都试过了

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

comboBoxLang.SelectedItem = book.Language;

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

4

4 回答 4

1

That looks right to me! I am doing the same thing, are you sure that book.Language string is an EXACT match to one of the items in the list?

And is the list populated BEFORE you are trying to SelectedValue?

于 2013-10-18T12:36:01.117 回答
0

你没有告诉什么样的变量book是:它是 typeLangEnum吗?或者它是一个有Language属性的类?(在最后一种情况下:Language属性的类型是什么?)

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

comboBoxLanguage.SelectedItem = (LangEnum)book.Language;

此外,如果您在 WinForm 事件中填充您的组合框,您还应该关心它们被触发的顺序。看看这个 SO question form more infos。

于 2013-10-18T13:56:05.403 回答
0

更好的尝试:

comboBoxLanguage.SelectedItem = book.Language;

// or even

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

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

于 2013-10-18T12:40:21.960 回答
0

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

comboBoxLanguage.SelectedItem = book.Language;
于 2013-10-18T12:41:31.897 回答