Mam enum tak:NET wiązania z danymi combobox do wyliczenia strun wraz z opisem atrybutów
public enum Cities
{
[Description("New York City")]
NewYork,
[Description("Los Angeles")]
LosAngeles,
Washington,
[Description("San Antonio")]
SanAntonio,
Chicago
}
Chcę powiązać to do combobox i próbowałem to:
comboBox.DataSource = Enum.GetNames(typeof(Cities));
Ale wyświetla wartości w combobox zamiast w opisie String. Więc przeszedłem do tego:
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
{
return attributes[0].Description;
}
else
{
return value.ToString();
}
}
public static IList ToList(this Type type)
{
ArrayList list = new ArrayList();
Array enumValues = Enum.GetValues(type);
foreach (Enum value in enumValues)
{
list.Add(new KeyValuePair<Enum, string>(value, GetEnumDescription(value)));
}
return list;
}
Teraz list.Add() powoduje wywołanie w wartości i opis ciąg jest wyświetlany w combobox więc wymieniłem
list.Add(new KeyValuePair<Enum, string>(value, GetEnumDescription(value)));
z
list.Add(GetEnumDescription(value));
, a teraz otrzymuję tylko opisowy ciąg znaków wyświetlony na comboboxie, czego ostatecznie chcę. Teraz moje powiązanie danych jest zepsute, ponieważ nie może znaleźć tylko opisu ciągu w wyliczeniu. Pomyślałem, że może to być związane z combobox.DisplayMember i combobox.ValueMember, ale nie udało mi się jeszcze rozwiązać problemu. Czy ktokolwiek może mi powiedzieć, jak do cholery wyświetlam opisowy ciąg znaków, ale czy moje powiązanie danych używa wartości do przechowywania itp.? Dziękuję Ci!!!
Po prostu z ciekawości .. dlaczego musisz używać do tego Enum? –
Potrzebuję wyświetlić kilka comboboxes, które zawierają różne stałe opcje do wyboru dla moich użytkowników. Być może istnieje combobox wyświetlający cztery kolory (czerwony, żółty, zielony, niebieski). Inny może wyświetlić listę kształtów do wyboru. Ponieważ są to stałe listy, myślałem, że enum miałoby sens.Mam klasę "data", która modeluje wszystkie te rzeczy, a kiedy użytkownik zakończy wybory w interfejsie, po prostu analizuję właściwości obiektu danych i zapisuję wartości w pliku. Czy to jest odpowiedź na Twoje pytanie? – user685869
Tak, i będzie działało dobrze tak, jak to robisz, tylko sprawia, że kod jest trochę trudniejszy. Ponieważ i tak jest to lista zakodowana na stałe, jaka byłaby wada tworzenia listy zakodowanej na stałe w środowisku wykonawczym jako alternatywa? –