How can I pass addition local object variable to my event handler? [duplicate]
I want to a pass local object to the event handler. How can I do that? For example, how can I reference the "graphic" object, which is declared in the main function below, in the event handler function "hyperlinkButton_Click"?
    void main()
    {
        Graphic graphic = new Graphic();
        hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click);
    }
    void hyperlinkButton_Click(object sender, EventArgs e)
    {
    }
Use a delegate or a lambda expression.
hyperlinkButton.Click += (sender, e) => HandleGraphic(graphic, sender, e);
You could try closing on the graphic variable:
void main()
{
    Graphic graphic = new Graphic();
    hyperlinkButton.Click += (sender, e) => 
    {
        graphic.Blah(); 
    };
}
This would not be a good idea if you eventually need to remove the event handler manually.  Alternatively, you could make graphic a field instead of a local variable.
   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;
    }
but not good way.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论