C #Windows - 如何从ComboBox获取Enum值

时间:2009-08-18 10:47:41

标签: c#

我将字典绑定到ComboBox,它保存枚举值。检索我使用的选定值

comboBox1.SelectedItem返回维值,说 [0,Permanent] 。我要检索“永久”并将其转换回枚举。


就像是..
Employee.JobType = Enum.Parse(JobType,comboBox1.SelectedItem)

我怎样才能实现这一目标?

6 个答案:

答案 0 :(得分:16)

或者:

Employee.JobType = (JobType)Enum.Parse(typeof(JobType), comboBox1.SelectedValue);

或者:

Employee.JobType = (JobType)Enum.Parse(typeof(JobType), comboBox1.SelectedText);

答案 1 :(得分:1)

如果组合框的项目源是字典,则SelectedItem的类型为:KeyValuePair< [key of key],JobType>

您可以通过强制使用SelectedItem并访问Value属性来访问您的枚举值。

var selectedItem = (KeyValuePair<[type of key], JobType>) comboBox1.SelectedItem;
var jobType = selectedItem.Value;

答案 2 :(得分:0)

我认为这可以解决问题:

string[] parts = comboBox1.SelectedItem.Split(
                      new char[] { ',', '[', ']' }, 
                      StringSplitOptions.RemoveEmptyEntries);
Employee.JobType = (JobType)Enum.Parse(typeof(JobType), parts[1].Trim()));

首先,使用逗号和方括号拆分字符串,并让方法删除所有空元素。这应该会给你一个包含数字和文本的数组。使用文本部分进行枚举解析。

请注意,您需要将枚举的Type对象传递给Parse方法,然后需要转换结果,因为Parse的返回类型为{{ 1}}。

答案 3 :(得分:0)

Employee.JobType = (JobTypeEnum)Enum.Parse(typeof(JobTypeEnum), comboBox1.SelectedValue);

答案 4 :(得分:0)

请参阅此内容 - http://www.fmsinc.com/free/NewTips/NET/NETtip4.asp

PeopleNames people = (PeopleNames)Enum.Parse(ComboBox1.SelectedValue, PeopleNames)

数据绑定:

ComboBox1.DataSource = System.Enum.GetValues(typeof(PeopleNames))

答案 5 :(得分:0)

我有同样的问题 - (WPF)我的组合包含keyvalue对中的枚举。

我能得到枚举的唯一方法是

 KeyValuePair<string,string> selectedPair =  (KeyValuePair<string,string>)(cmbApplications.SelectedItem);
 ProTraceLicence.Products chosenProduct = (ProTraceLicence.Products)Enum.Parse(typeof(ProTraceLicence.Products), selectedPair.Key);

希望这有助于某人。不敢相信它是如此困难