【问题标题】:Creating Event Handlers创建事件处理程序
【发布时间】:2014-03-12 22:46:26
【问题描述】:

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

我希望,当您单击标签时,标签内的文件将显示在列表框中。但我不能让我的事件处理程序工作,是否有必要给我的标签一个如图所示的名称,我觉得我需要事件的名称,但如果名称是动态的,事件名称也需要,我不能这样做那。此外,我将需要访问事件中的标签属性,这就是为什么我创建了一个重载方法,但无论如何,单击标签不会执行我的任何一个事件处理程序。请指教,我将不胜感激。这是我的循环和事件处理程序中的内容

                    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");
    }

【问题讨论】:

    标签: c# dynamic event-handling label


    【解决方案1】:

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

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

    【讨论】:

    • 好的,有什么原因,从我写的代码来看,事件处理程序没有被调用? NVM,我明白了。谢谢帮助
    猜你喜欢
    • 2013-08-15
    • 2013-12-24
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多