如何获取与枚举绑定的ComboBox的选定值?

时间:2013-08-01 14:26:49

标签: c#

我使用Enum类型绑定ComboBox 我希望在ComboBox的选定索引更改时获得Enum的选定值。

我正在尝试这样但它不起作用。

Enum就像这样

CategoryType
{
    T=1, 
    D, 
    S
}

这就是我填充组合框的方法

custCmb.DataSource = Enum.GetNames(typeof(CategoryType));

选定的索引更改事件是这样的。

private void custCmb_SelectedIndexChanged(object sender, EventArgs e)
{
   categoryType selCustomizationType = Enum.Parse(CategoryType, custCmb.SelectedValue);
}

但是上面的方法不起作用我想要它的数值。

4 个答案:

答案 0 :(得分:2)

我测试了这个并且它工作正常。您需要在此处进行一些更改。

首先,您需要使用以下值绑定

custCmb.DataSource = Enum.GetValues(typeof(CategoryType));

然后您可以将选定的一个作为

返回
private void custCmb_SelectedIndexChanged(object sender, EventArgs e)
{
    CategoryType selCustomizationType = (CategoryType)custCmb.SelectedValue;
    int result = (int)selCustomizationType;
}

枚举是数字

GetNames将返回包含字段名称

的字符串数组

GetValues将返回一个int数组

答案 1 :(得分:1)

对于你必须使用的绑定:

custCmb.DataSource = Enum.GetValues(typeof(CategoryType));

并拥有所选的值:

private void custCmb_SelectedIndexChanged(object sender, EventArgs e)
{
   CategoryType selCustomizationType = (CategoryType)custCmb.SelectedValue;
}

答案 2 :(得分:0)

使用selectedText代替

private void custCmb_SelectedIndexChanged(object sender, EventArgs e)
{
   CategoryType selCustomizationType = Enum.Parse(CategoryType, custCmb.SelectedText);
}

答案 3 :(得分:0)

如果你这样做,你可以施展它:

CategoryType selCustomizationType =(CategoryType)Enum.Parse(typeof(CategoryType), custCmb.SelectedValue);