我不喜欢这样,但也许存在一个更好的办法:
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>
是包含一个关键属性和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");
}
}
}
}
我需要组合框保持与该类的EnumVal属性同步,即如果我更改EnumVal值,组合框将反映更改,反之亦然,如果我更改组合框值,EnumVal属性也会更新。 – 2009-10-01 09:02:17