将子组件添加到父组件面板?

时间:2013-09-22 17:02:08

标签: c# visual-studio-2012 windows-forms-designer

开发一种我需要一个很酷的可自定义界面的项目,所以我根据XML自定义选项设计了一个'父表单',所有孩子都可以从中“风格化”。 我添加了一个TableLayoutPanel来绘制边框,并在中间添加一个Panel,其中儿童表单可能会添加其组件并完成工作。

我面临的问题是,即使我将'内容面板'设置为'公开',设计师也不会让我从子窗体中添加控件。

我可以通过任何不同的方式制作可从'可定制'超类派生的可设计表格吗?

编辑:父类是公共的,包含Content-Panel的每个容器也都设置为public。

enter image description here

2 个答案:

答案 0 :(得分:1)

我手动添加到child的designer.cs父级内容窗格中的一个新Panel,将其设置为DockStyle.Fill。当我回到Designer时,它现在将我添加到子内容Panel的组件。

有点乱,我很确定会有另一种方式...

但我会一直这样工作,直到我能找到更好的解决方法。

答案 1 :(得分:1)

我在父类的范围内从设计器以外的代码添加了一个新的公共Panel,然后在父构造函数中,我将它添加到TableLayoutPanel,从构造函数代码配置了docking和colspan,在InitializeComponents()调用和BAM!下面/ p>

    public Panel contentPane = new Panel();

    public Dialogo()
    {
        InitializeComponent();
        Content.Controls.Add(contentPane);
        contentPane.Dock = DockStyle.Fill;
        // More code
    }

所以它是'Content'里面的一个contentPane,它是表格第二行中的另一个面板,占据了5列(因此表格围绕它并允许我绘制边框。 我不知道为什么,但是在设计师以外的代码中添加了内容面板,允许我直接从Designer中以子代码形式向面板添加组件。