-1

我有一个包含 flowlayoutpanel 的表单,并且在面板中添加了一个用户控件 A。在用户控件A的构造函数中,传递了一个指向同一个flowlayoutpanel的指针,这样用户控件A就在同一个flowlayoutpanel中创建了另一个用户控件B。问题是首先添加了用户控件 B,然后是 A。

Form1.cs

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void addBtn_Click(object sender, EventArgs e)
    {
        flowLayoutPanel1.Controls.Add(new Graphic1(this.flowLayoutPanel1));


    }
}

图形1.cs

public partial class Graphic1 : UserControl
{
    public Graphic1(FlowLayoutPanel flowPointer)
    {
        InitializeComponent();

        flowPointer.Controls.Add(new Graphic2());
    }
}

Graphic2.cs 只是一个标签

问题是在面板中Graphic1.cs之前添加了Graphic2.cs

4

1 回答 1

0

我看到了三种可能的解决方案:

  • 如果控件 A 的构造函数接收到流布局面板,则让控件 A 将自身添加到流布局面板中,然后添加其附加控件。
  • 与其在控件 A 的构造函数中添加附加控件,不如添加一个方法,例如控件 A。您可以在将控件 A 添加到流布局面板InitializeLayout调用该方法,然后该方法可以将任何其他控件添加到流布局中控制板。
  • 捕获对控件 A 属性的任何更改Parent(不确定这是否可能;这取决于您使用的 GUI 工具包)并在控件 A 的父级更改时添加其他控件。
于 2013-05-21T10:07:06.580 回答