C#自定义事件处理程序

TK.*_*TK. 7 c# properties event-handling

如果我有房产:

public list<String> names { get; set; }
Run Code Online (Sandbox Code Playgroud)

每当名称被添加到列表中时,如何为参数起见生成和处理名为'onNamesChanged'的自定义事件?

Jar*_*Par 13

BindingList可能是您的最佳选择,因为它具有内置的更改跟踪和您可以使用的各种现有事件.下面是一个公开Add的自定义事件的示例,该事件转发到BindingList事件.


    class Example
    {
        private BindingList<string> m_names = new BindingList<string>();
        public IEnumerable<string> Names { get { return m_names; } }
        public event AddingNewEventHandler NamesAdded
        {
            add { m_names.AddingNew += value; }
            remove { m_names.AddingNew -= value; }
        }
        public void Add(string name)
        {
            m_names.Add(name);
        }
    }
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 10

BindingList的另一种替代方法是ObservableCollection - 在这种情况下,您希望将自己的事件处理程序订阅到CollectionChanged事件并根据操作触发事件.