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;
}