我想将本地对象传递给事件处理程序。我怎样才能做到这一点?例如,如何在事件处理函数“hyperlinkButton_Click”中引用在下面的main函数中声明的“graphic”对象?
void main()
{
Graphic graphic = new Graphic();
hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click);
}
void hyperlinkButton_Click(object sender, EventArgs e)
{
}
答案 0 :(得分:6)
使用委托或lambda表达式。
hyperlinkButton.Click += (sender, e) => HandleGraphic(graphic, sender, e);
答案 1 :(得分:1)
您可以尝试关闭graphic
变量:
void main()
{
Graphic graphic = new Graphic();
hyperlinkButton.Click += (sender, e) =>
{
graphic.Blah();
};
}
如果您最终需要手动删除事件处理程序,这不是一个好主意。或者,您可以将graphic
设为字段而不是局部变量。
答案 2 :(得分:0)
void main()
{
Graphic graphic = new Graphic();
hyperlinkButton.Tag = graphic;
hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click);
}
void hyperlinkButton_Click(object sender, EventArgs e)
{
Graphic graphic =(sender as HyperlinkButton).Tag as Graphic;
}
但不是好方法。