我将字典绑定到ComboBox,它保存枚举值。检索我使用的选定值
comboBox1.SelectedItem返回维值,说 [0,Permanent] 。我要检索“永久”并将其转换回枚举。
就像是..
Employee.JobType = Enum.Parse(JobType,comboBox1.SelectedItem)
我怎样才能实现这一目标?
答案 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);
希望这有助于某人。不敢相信它是如此困难