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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#删除flowLayoutPanel中的动态创建控件相关的知识,希望对你有一定的参考价值。

所以场景是:UserControl:1 GroupBox里面:2 combobox,1 textbox,1 richtextbox和1 button为“删除groupBox”

形式:1个按钮(添加groupBox)和flowLayoutPanel

我的问题:我可以添加尽可能多的groupBox组件,但当我单击“删除组框”按钮时,如果我执行“表单1”:

FlowLayoutPanel.Dispose()

我删除了所有创建的GroupBox组件,如果我这样做,则删除userControl

GroupBox.Dispose();

它删除了它,但是当我添加另一个时,它会在“被删除的那个”之下

这是我正在使用的代码:

用户控件:

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
}
答案

您有两种选择:

第一选择

你可以在你的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;
   }
}

以上是关于C#删除flowLayoutPanel中的动态创建控件的主要内容,如果未能解决你的问题,请参考以下文章

C#winform 怎么设置自动竖直滚动条

如何从动态创建的 CheckBox 中获取选定的值?

求C语言 数据结构中的链表创建,插入和删除代码

如何动态添加SplitContainer c#

C语言怎样使libxml像数据库一样动态创建节点哇

在 dom 树中的特定位置推送动态创建的删除元素