如何在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";