2013-06-06 238 views
0

在窗体加载我加载枚举到组合框选择枚举值枚举属性

private void Form2_Load(object sender, EventArgs e) 
{ 
    List<VATMode> vatModes = Enum.GetValues(typeof(VATMode)). 
     Cast<VATMode>().ToList();   
    cmbVatMode.DataSource = vatModes; 
} 

现在我想从cmbVatMode做分配值(下拉列表)我的枚举财产MyCustomVatMode

我尝试与MyCustomVatMode = cmbVatMode.SelectedValue;,但它不工作。

+0

你应该投你'SelectedValue' – sarwar026

+1

我更喜欢使用Enum.TryParse如果返回布尔输入值是可解析的,或者不是。 – SpaceBison

+0

可能的重复http://stackoverflow.com/questions/29482/cast-int-to-enum-in-c-sharp – sarwar026

回答

1

如果将DataSource设置为VATMode的列表,则SelectedValue将返回对象类型的引用。这可以成功地转换为您的枚举。下一段代码演示了这一点

VATMode MyCustomVatMode = (VATMode)cmbVatMode.SelectedValue; 

例如下面的代码将打印每次安慰枚举你会改变一个ComboBox:

cmbVatMode.SelectedValueChanged += (s, a) => 
{ 
    VATMode selected = (VATMode)cmbVatMode.SelectedValue; 
    Console.WriteLine(selected); 
};