我在子视图中有一个带有按钮的ExpandableListView。我想将事件处理程序与按钮的单击绑定在一起。

这是我要实现的目标:



public void func1()
{
    // let say we have following arguments
    int arg1= 100;
    SomeObject arg2 = new SomeObj("John", "1000");
    button.Click -= DeleteActionHandler;
    button.Click += DeleteActionHandler;     // this is point-1
}





DeleteActionHandler如下:



void DeleteActionHandler(object s, EventArgs e)
{
   // some implementation
   // I want  arg1 and arg2 to be passed here.
}





问题是我想从Point-1传递DeleteActionHandler中的一些参数。我可以在EventArgs中发送参数吗?还是有其他方法。

最佳答案

您不能将数据直接传递到DeleteActionHandler。但是,可以使用Tagbutton属性设置数据,并稍后像DeleteActionHandler一样在((Button)sender).Tag中读取数据。

这是基于您的代码示例的一段代码:

public void func1()
{
    ...
    button.Tag = new ParametersWrapper(arg1, arg2);
}

void DeleteActionHandler(object s, EventArgs e)
{
   var args = (ParametersWrapper)((Button)sender).Tag;
}

10-08 12:03