Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
swdev:dotnet:enum [2011/12/02 14:09]
smayr
swdev:dotnet:enum [2011/12/02 14:11] (current)
smayr
Line 74: Line 74:
 </code> </code>
  
 +== Enumerate Enum for creating ListBox ==
 +<code csharp>
 +///----------------------------------------------------------------------------------------
 +/// <summary>
 +/// Enumerate enums to easily create a drop down list based on an enum.
 +/// Source: http://blog.spontaneouspublicity.com/post/2008/01/17/Associating-Strings-with-enums-in-C.aspx
 +/// 
 +/// Example:
 +/// DropDownList stateDropDown = new DropDownList();
 +/// foreach (States state in EnumToList<States>())
 +/// {
 +///    stateDropDown.Items.Add(GetEnumDescription(state));
 +/// }
 +/// </summary>
 +/// <typeparam name="T"></typeparam>
 +/// <returns></returns>
 +///----------------------------------------------------------------------------------------
 +public static IEnumerable<T> EnumToList<T>()
 +{
 +    Type enumType = typeof(T);
  
 +    // Can't use generic type constraints on value types,
 +    // so have to do check like this
 +    if (enumType.BaseType != typeof(Enum))
 +    {
 +        throw new ArgumentException("T must be of type System.Enum");
 +    }
 +
 +    Array enumValArray  = Enum.GetValues(enumType);
 +    List<T> enumValList = new List<T>(enumValArray.Length);
 +
 +    foreach (int val in enumValArray)
 +    {
 +        enumValList.Add((T)Enum.Parse(enumType, val.ToString()));
 +    }
 +
 +    return enumValList;
 +}
 +</code>