Nếu bạn đang sử dụng .NET 3.5, bạn có thể thêm lớp mở rộng này:
public static class EnumExtensions {
public static List<string> GetFriendlyNames(this Enum enm) {
List<string> result = new List<string>();
result.AddRange(Enum.GetNames(enm.GetType()).Select(s => s.ToFriendlyName()));
return result;
}
public static string GetFriendlyName(this Enum enm) {
return Enum.GetName(enm.GetType(), enm).ToFriendlyName();
}
private static string ToFriendlyName(this string orig) {
return orig.Replace("_", " ");
}
}
Và sau đó thiết lập combo box của bạn, bạn muốn chỉ làm:
MyEnum val = MyEnum.My_Value_1;
comboBox1.DataSource = val.GetFriendlyNames();
comboBox1.SelectedItem = val.GetFriendlyName();
nên này làm việc với bất kỳ Enum nào. Bạn phải chắc chắn rằng bạn có một câu lệnh using cho vùng tên bao gồm lớp EnumExtensions.
Nguồn
2009-07-09 06:52:37
bản sao có thể có của [Làm cách nào để có hộp tổ hợp ràng buộc enum với định dạng chuỗi tùy chỉnh cho các giá trị enum?] (http://stackoverflow.com/questions/796607/how-do-i-have-an-enum-bound-combobox-with-custom-string-formatting-for-enum-valu) –
Xem ** [câu trả lời này] (http://stackoverflow.com/questions/796607/how-do-i-override-tostring-in-c-enums/796655#796655) ** cho câu hỏi [Làm cách nào để ghi đè lên ToString trong C# enums?] (http://stackoverflow.com/questions/796607/how-do-i-override-tostring-in-c-enums/). –