如何在ComboBox中捕获Object的事件?

时间:2012-06-07 16:09:46

标签: vb.net events combobox

所以基本上我在表单上有一个ComboBox,我通过添加名为“Category”的自定义对象并将DisplayMember设置为我对象的属性“Name”来填充。

在另一个可以同时打开的表格上,我可以编辑这些“类别”对象的名称。我举起了一个名为“NameChanged”的活动但是如何在包含ComboBox的表单中捕获它?

即使对象“类别”的属性“名称”发生更改,ComboBox上的显示也不会自动更新。所以我需要抓住这个事件,但我不知道该怎么做。

感谢任何可以帮助我的人。

1 个答案:

答案 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在属性值更改时更新显示。