C# 停靠封装控件

C# 停靠封装控件,c#,winforms,controls,windows-forms-designer,docking,C#,Winforms,Controls,Windows Forms Designer,Docking,我在派生的选项卡页中有一个封装控件,无法将其停靠到包含派生的选项卡页的表单MainForm 我已经正确添加了选项卡页和控件,它们显示在MainForm上。但是,控件未正确停靠(样式:填充)。您可以通过调整窗体大小来验证这一点 我已经在派生的选项卡页的构造函数中设置了属性\u control.Dock=System.Windows.Forms.DockStyle.Fill和\u control.Anchor=Left | Right | Top | Bottom 下面是代码示例: public c

我在派生的
选项卡页
中有一个封装控件,无法将其停靠到包含派生的
选项卡页
的表单
MainForm

我已经正确添加了
选项卡页和控件,它们显示在
MainForm
上。但是,控件未正确停靠(样式:填充)。您可以通过调整窗体大小来验证这一点

我已经在派生的
选项卡页
的构造函数中设置了属性
\u control.Dock=System.Windows.Forms.DockStyle.Fill
\u control.Anchor=Left | Right | Top | Bottom

下面是代码示例:

public class DerivedTab : TabPage {
    public DerivedTab(){
        ...
        _control= new BrightIdeasSoftware.TreeListView();
        this.Controls.Add(this._control);
        _control.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right | System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom;
        _control.Dock = System.Windows.Forms.DockStyle.Fill;
        ...
    }
}
main表单中,这是在运行时创建派生选项卡的函数:

    private DerivedTab CreateTab(string name)
    {
        DerivedTab tab = new DerivedTab(this, name);
        tab.SuspendLayout();

        MainTab.Controls.Add(tab);
        return tab;
    }
无论如何,我使用VisualStudioDesigner生成了这段代码,并且控件正确停靠。一、 然后,为tabpage创建一个类(因为我需要很多不同数量的选项卡),并将与tabpage相关的所有内容复制到
CreateTab
函数中。我将与tabpage属性相关的任何内容移动到其构造函数中。我将控件封装在派生的
选项卡页中,并将与控件相关的所有内容移动到派生的选项卡页中


那么,我错过了什么?是否可以在不实现eventhandler函数的情况下停靠封装的控件?

我找到了自己问题的解决方案。必须在TabControl添加TabPage后调用ResumeLayout,才能使TabPage正确停靠

private DerivedTab CreateTab(string name)
{
    DerivedTab tab = new DerivedTab(this, name);
    tab.SuspendLayout();

    MainTab.Controls.Add(tab);
    tab.ResumeLayout();
    return tab;
}

我找到了解决我自己问题的办法。必须在TabControl添加TabPage后调用ResumeLayout,才能使TabPage正确停靠

private DerivedTab CreateTab(string name)
{
    DerivedTab tab = new DerivedTab(this, name);
    tab.SuspendLayout();

    MainTab.Controls.Add(tab);
    tab.ResumeLayout();
    return tab;
}