【发布时间】:2012-06-08 17:09:36
【问题描述】:
问题:
如何创建将多个事件处理程序附加到多个控件的函数?
意图:
我正在使用 C# 开发 Windows 窗体应用程序。我想创建一个函数,该函数采用一组控件和一组事件处理程序。此函数会将事件处理程序附加到控件。什么是最优雅、最可重用的方法。我有一个非常丑陋的方式来处理委托,但它是一个但对我来说只是把它扔进一个循环并放弃这个函数的工作较少。
我基本上想要的行为:
foreach(Control control in controlCollection)
foreach(EventHandler handler in eventHandlerCollection)
control.Event += handler;
功能:
attachHandlers(? controlCollection, ? eventHandlers)
编辑:
我只是要将所有处理程序订阅到所有控件上的相同事件。我没有在我的描述中明确说明这一点,所以我相信这就是造成所有混乱的原因。
【问题讨论】:
-
你的函数如何知道处理程序应该订阅哪个事件(
Click、Enter、Validating、...)? -
不清楚您在寻找什么:您想要从 {controls,eventname} 到 eventHandlers 的哪种映射?每个控件上有多个事件...也不清楚每个控件是否有一组唯一的处理程序,或者您想对多个(一些?)控件使用相同的处理程序。
-
您还没有回答 stakx 的问题。函数如何知道处理程序订阅哪个事件。
-
@Servy 我要求的函数只是一个通用的函数,我将在其中对其进行硬编码。这就是函数如何知道的。再次为造成的混乱感到抱歉。
-
在一般用途的函数中,您不会对其进行硬编码,而是希望它是通用的。在特定情况下,这不是通用的,您可以将其硬编码为特定事件。鉴于您要对其进行硬编码,您打算将其硬编码到什么事件?会不会是
Control中的事件,您是否需要将输入控件的类型限制为某些子类型以确保它们都具有适当的事件,等等。
标签: c# .net winforms events .net-4.0