我在子视图中有一个带有按钮的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
。但是,可以使用Tag
的button
属性设置数据,并稍后像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;
}