如何在combobox中显示枚举值?

如何在combobox中显示枚举值? 下面的代码导致combobox的所有显示名称都是“caseHandler.cState”。 我希望它具有枚举值的实际名称。

我的枚举定义如下:

public enum caseState { Active = 1, Finished, Problem } 

我有一个定义为这样的类:

 public class cState { public string _name; public int _id; public cState(int id,string name) { _name = name; _id = id; } } 

填充我的combobox的代码:

 ArrayList AL = new ArrayList(); foreach (string cs in Enum.GetNames(typeof(caseState))) { cState aEnum = new cState((int)Enum.Parse(typeof(caseState),cs),cs); AL.Add(aEnum); } cbState.DisplayMember = "_name"; cbState.ValueMember = "_id"; cbState.DataSource = AL; 

你试过用吗?

 cbState.DataSource = Enum.GetNames(typeof(caseState)); 

在检索数据时只需解析它

恩欧姆

 public enum Status { Active = 0, Canceled = 3 }; 

设置下拉值

 cbStatus.DataSource = Enum.GetValues(typeof(Status)); 

从所选项目中获取枚举

 Status status; Enum.TryParse(cbStatus.SelectedValue.ToString(), out status); 

http://amir-shenodua.blogspot.com/2012/03/net-using-enum-to-populate-combo-box.html

在我的代码中,您可以将文本和值放在一起并填充Combobox

  public enum LayerType : int { [Description("محوطه")] Area = 1, [Description("ساختمان")] Building = 2, [Description("بارانداز")] Wharf = 3,} drpLayer.DataSource = Enum.GetValues(typeof(LayerType)) .Cast() .Select(value => new { (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description, value }) .OrderBy(item => item.value) .ToList(); drpLayer.DisplayMember = "Description"; drpLayer.ValueMember = "value";