【发布时间】:2021-10-19 11:29:07
【问题描述】:
我有一个 UserControl (UC),在那个 UC 中我有一个标签和一个图片框。
当我将许多 UC 添加到我的面板时,每当用户单击图片框时,我都需要删除 UC。
但是,我不能选择真正的 UC。
添加事件的UC代码:
public event EventHandler<EventArgs> X_click;
private void guna2PictureBox1_Click(object sender, EventArgs e)
{
if (X_click != null)
{
X_click(guna2PictureBox1, new EventArgs());
}
}
这是我选择和删除真正 UC 的代码:
private void a1_X_click(object sender, EventArgs e)
{
foreach (Control item in guna2Panel1.Controls.OfType<addCatUC>())
{
if (sender == item)
{
guna2Panel1.Controls.Remove(item);
}
}
}
注意:我为所有 UC 添加事件a1_X_click:
addC.X_click += new EventHandler<EventArgs>(a1_X_click);
【问题讨论】:
-
你的意思是UserControl?
-
是的,我必须写 UserControl
-
guna2Panel1.Controls.Remove((addCatUC) sender);应该足够了。不需要循环。您正在修改您正在循环的集合。那会做意想不到的事情。 -
所有 UC 都是在应用运行时创建的
-
我不知道用户点击哪个UC!!!
标签: c# user-controls panel windows-forms-designer