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