创建一个事件处理程序到类

时间:2009-07-25 23:50:21

标签: c# class event-handling

我有一个包含大量ListBox控件的应用程序。我想知道是否可以在Listbox的构造函数中为onselectedindexchanged添加eventhandler?所有列表框都将使用相同的方法。

我知道我可以手动添加它们,但我希望有一个解决方案可以改变我目前使用相同的事件处理程序的所有方法,并且当我添加新的方法时不必绑定到方法。

1 个答案:

答案 0 :(得分:1)

你可以简单地迭代控件吗?例如(在Form的/ Control的ctor中,在initiaize之后):

CascadeListBoxEvent(this, MyHandlerMethod)

使用实用方法:

static void CascadeListBoxEvent(Control parent, EventHandler handler)
{
    Queue<Control> queue = new Queue<Control>();
    queue.Enqueue(parent);
    while (queue.Count > 0)
    {
        Control c = queue.Dequeue();
        ListBox lb = c as ListBox;
        if (lb != null)
        {
            lb.SelectedIndexChanged += handler;
        }
        foreach (Control child in c.Controls)
        {
            queue.Enqueue(child);
        }
    }
}