1

问题:
如何创建将多个事件处理程序附加到多个控件的函数?

意图:
我正在使用 C# 开发一个 Windows 窗体应用程序。我想创建一个函数,该函数采用一组控件和一组事件处理程序。此函数会将事件处理程序附加到控件。什么是最优雅、最可重用的方法。我有一个非常丑陋的方式来处理委托,但它是一个但对我来说只是把它扔进一个循环并放弃这个函数的工作较少。

我基本上想要的行为:

foreach(Control control in controlCollection)
     foreach(EventHandler handler in eventHandlerCollection)
                    control.Event += handler;


功能:
attachHandlers(? controlCollection, ? eventHandlers)

编辑:
我只是要将所有处理程序订阅到所有控件上的相同事件。我没有在我的描述中明确说明这一点,所以我相信这是所有混乱的原因。

4

1 回答 1

2

如果有问题的控件继承自同一个基类或接口(或者它们是同一个类),您可以执行以下操作:

void AttachClickEventHandlers(List<IClickableControl> controls, List<MyClickHandler> eventHandlers)
{
    foreach (var control in controls)
        foreach (MyClickHandler handler in eventHandlers)
            control.Click += handler;
}

这假设一个接口,如:

public interface IClickableControl
{
    event MyClickHandler Click;
}
于 2012-06-08T17:21:52.623 回答