在c#中单击时,获取具有相同单击事件的多个面板名称

时间:2018-06-04 11:42:41

标签: c# events click controls directoryinfo

我有一个循环来制作具有此属性的多个面板:
1.Name
2.Left
3.Top
4.Width
5.Height
6.Backcolor
点击活动

我的问题出现在点击事件中 这个循环的每个面板都有这个事件。

如何获取此循环创建的面板名称。点击它?

这是我的代码

void showPanel()
    {
        VideoList list = new VideoList();
        int left = 125;
        int top = 50;

        DirectoryInfo[] d = new DirectoryInfo("videos").GetDirectories();
        foreach (DirectoryInfo dir in d)
        {
            Panel pnl = new Panel();
            list.panel1.Controls.Add(pnl);
            pnl.Cursor = Cursors.Hand;

            if (!File.Exists("videos\\" + dir.Name + "\\image.jpg"))
                pnl.BackColor = Color.LightGray;
            else
            {
                pnl.BackgroundImageLayout = ImageLayout.Stretch;
                pnl.BackgroundImage = Image.FromFile("videos\\" + dir.Name + "\\image.jpg");
            }

            pnl.Click += new EventHandler(pnl_Click);
            pnl.Name = dir.Name;
            pnl.Left = left;
            pnl.Top = top;
            pnl.Width = 150;
            pnl.Height = 100;
            left += 200;
            if (left >= 750)
            {
                left = 125;
                top += 150;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您还没有包含事件处理程序实现(pnl_Click),它应该类似于:

private void pnl_Click(object sender, EventArgs e)

对您而言,重要的部分是sender参数。这总是指启动事件的控件,在本例中是Click事件。

如果添加以下行:

Panel thisPanel = sender as Panel;

在事件处理程序实现开始时,您将能够通过使用例如thisPanel.Name

与引发事件的Panel进行交互