如果您讓Category類實現INotifyPropertyChanged,則可以在屬性更改時處理事件。
要做到這一點,你有你的財產從一個簡單的屬性更改:
// will NOT raise event
public string Name { get; set; }
到更多的東西,如:
// will raise event
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
_Name = value;
OnPropertyChanged("Name");
}
}
}
private string _Name;
,然後在你的類以及執行INotifyPropertyChanged:
public event EventHandler<PropertyChangedEventArgs> PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
protected virtual void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
現在,當向您的ComboBox添加一個Category對象時,訂閱Pro每次Name屬性更改時都會引發pertyChanged事件。
一個更好的方法
考慮使用Binding類來填充組合框。綁定自動使用INotifyPropertyChanged在屬性值更改時更新顯示。
謝謝您的回覆。我現在試圖用數據綁定重新編碼我的組合框。 – user1428252
我做不到。我必須使用ComboBox.DataBindings.Add方法嗎?如果是,如何使用它,因爲我嘗試了很多方法,我無法使它工作。我的數據源是繼承列表(類別)的類。 – user1428252
我的大部分數據綁定經驗都在WPF和Silverlight中。從WinForms和綁定開始的一些好的地方是:http://stackoverflow.com/questions/29654/winforms-databinding-and-foreign-key-relationships和http://stackoverflow.com/questions/454959/winforms-databinding –