我有一个包含大量ListBox控件的应用程序。我想知道是否可以在Listbox的构造函数中为onselectedindexchanged添加eventhandler?所有列表框都将使用相同的方法。
我知道我可以手动添加它们,但我希望有一个解决方案可以改变我目前使用相同的事件处理程序的所有方法,并且当我添加新的方法时不必绑定到方法。
答案 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);
}
}
}