我有一个动态添加到FlowLayoutPanel的UserControl。在同一个UserControl中,如果用户想要它,我有一个按钮可以自动删除它,显然是在运行时。要消除我的意思不仅要消除紧密按钮,还要包含按钮的完整UserControl。 此时动态添加UserControl的代码如下:
private void agregaUC() {
UserControl1 UC = new UserControl1();
aux += 1;
UC.Tag = aux.ToString();
flowLayoutPanel2.Controls.Add(UC);
}
消除此问题的代码位于表单的一侧,即添加UserControl的位置。删除UserControl的按钮事件由代码通过运算符+ =抛出,然后我写下你给我的建议。
答案 0 :(得分:0)
备注:将Parent属性值设置为null会从当前父控件的Control.ControlCollection中删除该控件。
所以
plot data u 1:2 w p pt 7 ps 1 pi 2000 lc rgb "red" title "density"
修改强>
该代码旨在从用户控件本身中调用。
答案 1 :(得分:0)
你可以尝试类似的东西。
this.Parent = null;
答案 2 :(得分:0)
编辑:根据您添加的代码示例,我修改了以下代码,以便更好地满足您的需求。您需要了解如何访问您尝试删除的控件的标记。
由于您没有引用,因此您应该确保找到.Tag
属性,因为这样您就可以执行类似
foreach (Control c in flowLayoutPanel2.Controls) {
if (c.Tag == "Aux") {
flowLayoutPanel2.Controls.Remove(c);
c.Dispose();
break;
}
}
阅读各处的所有评论,似乎这就是正在发生的事情。用户控件中有UserControl
,Button
(删除),按钮的Click
事件由窗口订阅,并且它在这个事件处理程序,我们正试图从UserControl
flowLayoutPanel2
根据这些假设,您的功能应如下所示:
void UserControl_Delete_Click(object sender, EventArgs e)
{
Button Delete = (Button)sender;
UserControl UC = (UserControl)Delete.Parent;
flowLayoutControl2.Controls.Remove(UC);
UC.Dispose();
}
这假设了很多关于一切的内部结构,因为我没有代码来确认这将起作用。不过,它会让你走很长的路,而且只需要根据UserControl
的实际结构进行一些调整。