C#在flowLayoutPanel中删除动态创建的控件

时间:2019-04-19 10:32:31

标签: c# winforms user-controls

因此场景为:UserControl,其中:1 GroupBox,内部:2 combobox,1 textbox,1 richtextbox和1 button用于“删除groupBox”

表单:1个按钮(用于添加groupBox)和一个flowLayoutPanel

我的问题:我可以根据需要添加任意数量的groupBox组件,但是如果我单击“删除组框”按钮,则可以在“表单1”中添加:

FlowLayoutPanel.Dispose()

我删除了所有已创建的GroupBox组件,如果执行了,则在userControl中删除:

GroupBox.Dispose();

它将其删除,但是当我添加另一个时,它会显示在“已删除的一个”下

这是我正在使用的代码:

UserControl:

private void Remove_Click(object sender, EventArgs e)
{
   removeFunction();
} 

表格1:

Private void add_GroupBox(my class)
{
   myclass myClass = new myclass(datasource, null);
   flowLayoutPanel.Controls.add(myClass);
}


private void Remove_GroupBox()
{
   flowLayoutPanel.Controls.Clear(); // I know it removes all the groups created
   FlowLayoutPanel.Dispose(); // It does the same job

   // I just want the get the selected groupBox and dispose it or clear it
}

1 个答案:

答案 0 :(得分:0)

您有两个选择:

第一个选项

您可以在User Control上添加一个按钮以自行处置。

this.Dispose();


第二个选项

您可以在表单中添加属性以跟踪所选的用户控件。

Form1:

public Control SelectedItem { get; set; } = null;

private void DeleteButton_Click(object sender, EventArgs e)
{
    if (SelectedItem != null)
    {
        SelectedItem.Dispose();
    }
}

UserControl1:

// You can use any Event you prefer (Enter, Click or etc.).
private void GroupBox1_Enter(object sender, EventArgs e)
{
   // First Parent is FlowLayoutPanel
   // Second Parent is your Form
   Form1 parent = this.Parent.Parent as Form1;
   if (parent != null)
   {
      parent.SelectedItem = this;
   }
}