首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将枚举绑定到WinForms组合框,然后设置它

将枚举绑定到WinForms组合框,然后设置它
EN

Stack Overflow用户
提问于 2009-05-25 14:19:53
回答 27查看 207.7K关注 0票数 135

很多人已经回答了如何在WinForms中将枚举绑定到组合框的问题。是这样的:

代码语言:javascript
复制
comboBox1.DataSource = Enum.GetValues(typeof(MyEnum));

但是,如果不能设置要显示的实际值,那么这是非常无用的。

我试过了:

代码语言:javascript
复制
comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null

我也尝试过:

代码语言:javascript
复制
comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1

有没有人知道怎么做?

EN

回答 27

Stack Overflow用户

发布于 2012-03-03 06:18:41

枚举

代码语言:javascript
复制
public enum Status { Active = 0, Canceled = 3 }; 

设置其中的下拉值

代码语言:javascript
复制
cbStatus.DataSource = Enum.GetValues(typeof(Status));

从所选项目获取枚举

代码语言:javascript
复制
Status status; 
Enum.TryParse<Status>(cbStatus.SelectedValue.ToString(), out status); 
票数 173
EN

Stack Overflow用户

发布于 2015-09-04 15:39:49

要简化操作:

首先初始化此命令:(例如,在InitalizeComponent()之后)

代码语言:javascript
复制
yourComboBox.DataSource =  Enum.GetValues(typeof(YourEnum));

要检索组合框中的选定项目,请执行以下操作:

代码语言:javascript
复制
YourEnum enum = (YourEnum) yourComboBox.SelectedItem;

如果要设置组合框的值:

代码语言:javascript
复制
yourComboBox.SelectedItem = YourEnem.Foo;
票数 46
EN

Stack Overflow用户

发布于 2009-05-25 15:39:05

代码

代码语言:javascript
复制
comboBox1.SelectedItem = MyEnum.Something;

没有问题,问题一定出在DataBinding上。DataBinding赋值发生在构造函数之后,主要是在第一次显示组合框时。尝试在Load事件中设置该值。例如,添加以下代码:

代码语言:javascript
复制
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    comboBox1.SelectedItem = MyEnum.Something;
}

并检查它是否工作。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/906899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档