如何在为事件分配委托时附加EventArgs / custom params?

时间:2010-02-14 17:05:39

标签: c#

我有这段代码:

this.form.Resize += new EventHandler(form_Resize);

但是我想在form_Resize事件中分配一些对象供以后访问,我该怎么做?

我是否可以访问EventArgs中的数据?

3 个答案:

答案 0 :(得分:7)

您无法为委托“分配其他数据”,但您可以创建form_Resize方法的参数化版本,然后使用 lambda表达式(在C#3+中)或匿名委托(C#2+)在附加处理程序时指定附加数据。写这个的一种方法如下:

void form_Resize(object sender, EventArgs e, Data additional) {
  // 'additional' contains whatever you specified when attaching handler
}

this.form.Resize += (s, e) => form_Resize(s, e, yourAdditionalData);

答案 1 :(得分:0)

数据应作为字段或属性的表单的一部分。您无法在未创建的事件中扩展数据模型。

答案 2 :(得分:0)

这取决于你究竟是什么意思。 EventHandler是预定义的委托类型,因此将在form_Resize方法中自动传递两个参数(sender和EventArgs)。另一方面,您可以访问form_Resize方法本身定义form_Resize方法的类的所有字段。

您可以阅读有关EventHandler委托here

的更多信息