【问题标题】:Form of object created from another object in c#c#中从另一个对象创建的对象形式
【发布时间】:2013-05-21 09:58:30
【问题描述】:

我有一个包含 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));


    }
}

Graphic1.cs

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

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

Graphic2.cs 只是一个标签

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

【问题讨论】:

  • 为什么在控件A之前添加控件B会出现问题?
  • 代码将有助于提供更好的解决方案
  • 这非常不清楚并且缺少您尝试过的代码
  • 您使用的是什么 GUI 工具包?表格?请添加适当的标签。
  • 另外,也许this SO question 相关/解决您的问题。

标签: c#


【解决方案1】:

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

  • 如果控件 A 的构造函数接收到流布局面板,则让控件 A 将 自身 添加到流布局面板中,然后添加其附加控件。
  • 不要在控件 A 的构造函数中添加额外的控件,而是向控件 A 添加诸如 InitializeLayout 之类的方法。您可以在将控件 A 添加到流布局面板后调用该方法,然后该方法可以将任何其他控件添加到流布局面板。
  • 捕获对控件 A 的 Parent 属性的任何更改(不确定这是否可能;这取决于您使用的 GUI 工具包)并在控件 A 的父级更改时添加其他控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多