如何将添加的本地对象变量传递给我的事件处理程序?

我想将本地对象传递给事件处理程序。 我怎样才能做到这一点? 例如,如何在事件处理函数“hyperlinkBut​​ton_Click”中引用在下面的main函数中声明的“graphic”对象?

void main() { Graphic graphic = new Graphic(); hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click); } void hyperlinkButton_Click(object sender, EventArgs e) { } 

使用委托或lambda表达式。

 hyperlinkButton.Click += (sender, e) => HandleGraphic(graphic, sender, e); 

您可以尝试关闭graphic变量:

 void main() { Graphic graphic = new Graphic(); hyperlinkButton.Click += (sender, e) => { graphic.Blah(); }; } 

如果您最终需要手动删除事件处理程序,这不是一个好主意。 或者,您可以将graphic字段而不是局部变量。

  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; } 

但不是好方法。