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

时间:2011-04-13 16:30:30

标签: c# silverlight events handler

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

    void main()
    {
        Graphic graphic = new Graphic();

        hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click);
    }

    void hyperlinkButton_Click(object sender, EventArgs e)
    {

    }

3 个答案:

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

但不是好方法。