[英]How do i show enum values in a combo-box?
如何在組合框中顯示枚舉值? 下面的代碼導致組合框的所有顯示名稱都是“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;
}
}
填充我的組合框的代碼:
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<Status>(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<Enum>()
.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";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.