所以基本上我在表单上有一个ComboBox,我通过添加名为“Category”的自定义对象并将DisplayMember设置为我对象的属性“Name”来填充。
在另一个可以同时打开的表格上,我可以编辑这些“类别”对象的名称。我举起了一个名为“NameChanged”的活动但是如何在包含ComboBox的表单中捕获它?
即使对象“类别”的属性“名称”发生更改,ComboBox上的显示也不会自动更新。所以我需要抓住这个事件,但我不知道该怎么做。
感谢任何可以帮助我的人。
答案 0 :(得分:0)
如果使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对象时,订阅PropertyChanged事件,每次Name属性更改时都会引发该事件。
更好的方式
考虑使用Binding类来填充您的ComboBox。绑定自动使用INotifyPropertyChanged在属性值更改时更新显示。