Я делаю это так, но, возможно, существует лучший способ:
List<ListItem<MyEnum>> enumVals = new List<ListItem<MyEnum>>();
foreach( MyEnum m in Enum.GetValues (typeof(MyEnum) )
{
enumVals.Add (new ListItem<MyEnum>(m, m.ToString());
}
myComboBox.DataSource = enumVals;
myComboBox.ValueMember = "Key";
myComboBox.DisplayMember = "Description";
Обратите внимание, что ListItem<T>
- это созданный мной пользовательский класс, который содержит свойство Key и свойство Description.
Чтобы синхронизировать ваше свойство с выбранным значением в выпадающем списке, вам необходимо:
- добавьте привязку данных в комбинированный список, чтобы значение SelectedValue комбинированного списка было привязано к вашему свойству
- убедитесь, что класс, содержащий свойство, реализует INotifyPropertyChanged, чтобы при изменении свойства выбранное значение комбинированного списка также изменялось.
myComboBox.DataBindings.Add ("SelectedValue", theBindingSource, "YourPropertyName");
и
public class TheClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private MyEnum _myField;
public MyEnum MyPropertyName
{
get { return _myField; }
set
{
if( _myField != value )
{
_myField = value;
if( PropertyChanged != null )
PropertyChanged ("MyPropertyName");
}
}
}
}