我知道其他人已经回答了正确的答案,但是,如果你想在组合框中使用枚举,你可能想要额外的码数并将字符串关联到枚举,这样你就可以提供更多细节.显示的字符串(例如使用与您的编码标准不匹配的单词或显示字符串之间的空格)
此博客条目可能很有用 - 将字符串与c#中的枚举相关联
public enum States { California, [Description("New Mexico")] NewMexico, [Description("New York")] NewYork, [Description("South Carolina")] SouthCarolina, Tennessee, Washington }
作为奖励,他还提供了一种实用程序方法,用于枚举我现在使用Jon Skeet的评论更新的枚举
public static IEnumerableEnumToList () where T : struct { 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 enumValList = new List (); foreach (T val in enumValArray) { enumValList.Add(val.ToString()); } return enumValList; }
乔恩还指出,在C#3.0中它可以简化为类似的东西(现在它变得如此轻盈,我想你可以在线进行):
public static IEnumerableEnumToList () where T : struct { return Enum.GetValues(typeof(T)).Cast (); } // Using above method statesComboBox.Items = EnumToList (); // Inline statesComboBox.Items = Enum.GetValues(typeof(States)).Cast ();
angry person.. 10
使用Enum.GetValues方法:
foreach (TestEnum en in Enum.GetValues(typeof(TestEnum))) { ... }
您不需要将它们转换为字符串,这样您就可以通过直接将SelectedItem属性转换为TestEnum值来检索它们.
string[] names = Enum.GetNames (typeof(MyEnum));
然后只需填充数组的下拉列表
我知道其他人已经回答了正确的答案,但是,如果你想在组合框中使用枚举,你可能想要额外的码数并将字符串关联到枚举,这样你就可以提供更多细节.显示的字符串(例如使用与您的编码标准不匹配的单词或显示字符串之间的空格)
此博客条目可能很有用 - 将字符串与c#中的枚举相关联
public enum States { California, [Description("New Mexico")] NewMexico, [Description("New York")] NewYork, [Description("South Carolina")] SouthCarolina, Tennessee, Washington }
作为奖励,他还提供了一种实用程序方法,用于枚举我现在使用Jon Skeet的评论更新的枚举
public static IEnumerableEnumToList () where T : struct { 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 enumValList = new List (); foreach (T val in enumValArray) { enumValList.Add(val.ToString()); } return enumValList; }
乔恩还指出,在C#3.0中它可以简化为类似的东西(现在它变得如此轻盈,我想你可以在线进行):
public static IEnumerableEnumToList () where T : struct { return Enum.GetValues(typeof(T)).Cast (); } // Using above method statesComboBox.Items = EnumToList (); // Inline statesComboBox.Items = Enum.GetValues(typeof(States)).Cast ();
使用Enum.GetValues方法:
foreach (TestEnum en in Enum.GetValues(typeof(TestEnum))) { ... }
您不需要将它们转换为字符串,这样您就可以通过直接将SelectedItem属性转换为TestEnum值来检索它们.
您可以迭代Enum.GetNames方法返回的数组.
public class GetNamesTest { enum Colors { Red, Green, Blue, Yellow }; enum Styles { Plaid, Striped, Tartan, Corduroy }; public static void Main() { Console.WriteLine("The values of the Colors Enum are:"); foreach(string s in Enum.GetNames(typeof(Colors))) Console.WriteLine(s); Console.WriteLine(); Console.WriteLine("The values of the Styles Enum are:"); foreach(string s in Enum.GetNames(typeof(Styles))) Console.WriteLine(s); } }