簡體   English   中英

如何在組合框中顯示枚舉值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM