我有这段代码:
this.form.Resize += new EventHandler(form_Resize);
但是我想在form_Resize
事件中分配一些对象供以后访问,我该怎么做?
我是否可以访问EventArgs中的数据?
答案 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
的更多信息