2012-05-15 58 views
0

我有含有枚舉以下(舉例):SortedOrder枚舉爲列表框控制

clmn=543, 
tclk=432, , 
tolf=876, 
frol=654 

我具有結合該枚舉鍵的ItemsSource按排序順序列表框控件的屬性。 Enum應該按值排序。

請幫助

回答

0

'代碼排序枚舉:

public static SortedList<int, string> GetEnumDataSource<T>() 
    { 
     Type myEnumType = typeof(T); 
     SortedList<int, string> returnCollection = new SortedList<int, string>(); 
     try 
     { 
      if (myEnumType.BaseType == typeof(Enum)) 
      { 
       string[] enumNames = Enum.GetNames(myEnumType); 
       int enumLength = enumNames.Length - 1; 
       for (int i = 0; i <= enumLength; i++) 
       { 
        returnCollection.Add(Convert.ToInt32(Enum.Parse(myEnumType, enumNames[i])), enumNames[i]); 
       } 
      } 
     } 
     catch (Exception exception1) 
     { 

      return null; 
     } 
     return returnCollection; 
    } 

' 代碼以枚舉綁定到下拉列表框:

public void BindBox() 
{ 
    SortedList<int, string> phoneTypes = null; 
    phoneTypes = GetEnumDataSource<PhoneNumberType>(); 

    if ((phoneTypes != null)) { 
     dropdownctrl.DataSource = phoneTypes; 
     dropdownctrl.DataValueField = "Key"; 
     dropdownctrl.DataTextField = "Value"; 
     dropdownctrl.DataBind(); 
    } 
} 
+0

:它會按枚舉值枚舉枚舉嗎? – user184842

+0

是的,GetEnumDataSource函數將對枚舉值進行排序並返回到調用函數BindBox()。 –

+0

謝謝羅米爾。它解決了我的問題 – user184842

0
MemberInfo[] memberInfos = typeof(MyEnum) 
          .GetMembers(BindingFlags.Public | BindingFlags.Static); 

mylistBox.ItemSource = memberInfos.Select(x => x.Name).ToArray(); 
0

這段代碼獲得MyEnum值並對它們進行分類,希望它能幫助你。

var values = typeof(MyEnum).GetEnumValues(); 
Array.Sort(values);