为标签的点击事件挂钩自定义功能

时间:2012-04-04 08:47:55

标签: c#

如何挂钩自定义函数,以便在标签点击时,运行相同的函数并传递参数?

List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5
    foreach (var item in _list1)
    {
        Label lb = new Label { Text = item.ToString() };
    lb.Click += //custom function and pass the parameter item

    }

private void CustomFunctionOnClick(int s)
{
textBox1.Text = s.ToString();
}

- &GT;我无法使用标签的click事件来挂钩代理。
- &GT;换句话说,我可以有一个CustomEventArgs类将数据传递给事件(object sender, CustomEventArgs e),我可以在事件中运行相同的代码。 但是click事件委托没有将CustomEventArgs定义为事件的参数?

然后,这是怎么做到的?

2 个答案:

答案 0 :(得分:0)

List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5

foreach (var item in _list1)
{
    // take copy of loop variable to avoid closing over the loop variable
    int i = item; 
    Label lb = new Label { Text = item.ToString() };
    lb.Click += (x,y) => CustomFunction(i);
}

void CustomFunction(int item)
{
}

答案 1 :(得分:0)

你也可以这样做:

List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5

foreach (var item in _list1)
{
    Label lb = new Label { Text = item.ToString() };
    lb.Tag = item;
    lb.Click += CustomFunctionOnClick;
}

private void CustomFunctionOnClick(object sender, EventArgs e)
{
    Label l = (Label)sender;
    int item = l.Tag;
}