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

Get Multiple Panel Name With Same Click Event When Click On It in c#

我有一个循环来制作具有此属性的多个面板:
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;
            }
        }
    }

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

private void pnl_Click(object sender, EventArgs e)

对您来说,重要的部分是 sender 参数。这始终指的是启动事件的控件,在本例中为 Click 事件。

如果添加以下行:

Panel thisPanel = sender as Panel;

在事件处理程序实施开始时,您将能够与引发事件的面板进行交互,例如,thisPanel.Name