C# 创建事件处理程序

C# 创建事件处理程序,c#,dynamic,event-handling,label,C#,Dynamic,Event Handling,Label,所以我在循环中创建动态标签,即目录中文件夹列表的标签 我想,当您单击标签时,标签内的文件将显示在列表框中。但是我无法让我的事件处理程序工作,是否需要给我的标签一个如图所示的名称,我觉得我需要事件的名称,但是如果名称是动态的,那么事件名称也需要是动态的,我不能这样做。此外,我还需要访问事件中的labels属性,因此我创建了一个重载方法,但不管怎样,单击标签都不会执行我的两个事件处理程序。请告知,我将不胜感激。下面是我的循环和事件处理程序中的内容 string

所以我在循环中创建动态标签,即目录中文件夹列表的标签

我想,当您单击标签时,标签内的文件将显示在列表框中。但是我无法让我的事件处理程序工作,是否需要给我的标签一个如图所示的名称,我觉得我需要事件的名称,但是如果名称是动态的,那么事件名称也需要是动态的,我不能这样做。此外,我还需要访问事件中的labels属性,因此我创建了一个重载方法,但不管怎样,单击标签都不会执行我的两个事件处理程序。请告知,我将不胜感激。下面是我的循环和事件处理程序中的内容

                    string str = lstMovieFolders[i];
                    Label lbl = new Label();
                    lbl.Name = "lbl" + str;
                    lbl.Location = new Point(25, intStartPoint);
                    lbl.Text = str;
                    lbl.Size = new Size(x, y);
                    lbl.Click += new EventHandler(lbl_Click);
                    grp.Controls.Add(lbl);
                    intStartPoint += 30;

   public static void lbl_Click(object sender, EventArgs e)
    {
        MessageBox.Show("HELLOS");
    }
   public static void lbl_Click(object sender, EventArgs e, Label lbl)
    {
        MessageBox.Show("HELLO");
    }

您可以使用
sender
参数获取触发事件的当前
标签。您不需要重载

public static void lbl_Click(object sender, EventArgs e)
{
    var label = sender as Label;
    if(label != null)
    {
        string text = label.Text;

    }
}

好的,但是,根据我编写的代码,事件处理程序没有被调用,有什么原因吗?nvm,我明白了。谢谢你的帮助