很多人已经回答了如何在WinForms中将枚举绑定到组合框的问题。是这样的:
comboBox1.DataSource = Enum.GetValues(typeof(MyEnum));
但是,如果不能设置要显示的实际值,那么这是非常无用的。
我试过了:
comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null
我也尝试过:
comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1
有没有人知道怎么做?
发布于 2012-03-03 06:18:41
枚举
public enum Status { Active = 0, Canceled = 3 };
设置其中的下拉值
cbStatus.DataSource = Enum.GetValues(typeof(Status));
从所选项目获取枚举
Status status;
Enum.TryParse<Status>(cbStatus.SelectedValue.ToString(), out status);
发布于 2015-09-04 15:39:49
要简化操作:
首先初始化此命令:(例如,在InitalizeComponent()
之后)
yourComboBox.DataSource = Enum.GetValues(typeof(YourEnum));
要检索组合框中的选定项目,请执行以下操作:
YourEnum enum = (YourEnum) yourComboBox.SelectedItem;
如果要设置组合框的值:
yourComboBox.SelectedItem = YourEnem.Foo;
发布于 2009-05-25 15:39:05
代码
comboBox1.SelectedItem = MyEnum.Something;
没有问题,问题一定出在DataBinding上。DataBinding赋值发生在构造函数之后,主要是在第一次显示组合框时。尝试在Load事件中设置该值。例如,添加以下代码:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
comboBox1.SelectedItem = MyEnum.Something;
}
并检查它是否工作。
https://stackoverflow.com/questions/906899
复制相似问题