我有一个带有一堆控件的 Windows 窗体,它工作得很好。所有控件都包含在TableLayoutPanel
根据控件基本大小自动调整大小和Form
根据面板自动调整大小的 a 中,因此我不必担心不同平台和计算机的大小,因为所有内容都应根据当前配置的设置调整大小.
例如,这是一个简单的示例,说明它的外观。相关代码为:
//...code defining all the other Commands and .Add()'ing them to the Panel
form.Controls.Add(Panel);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();
我现在想要获取整个面板并将其放置在 TabControl 中,这样它就只是许多其他选项卡中的一个选项卡。我这样做如下:
//...code defining all the other Commands and .Add()'ing them to the Panel
TabControl tabControl = new TabControl();
tabControl.Dock = DockStyle.Fill;
TabPage tabPage = new TabPage("C1");
tabPage.Controls.Add(Panel);
tabControl.TabPages.Add(tabPage);
form.Controls.Add(tabControl);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();
所以基本上,我没有将 . 添加Panel
到,而是将其添加到 添加到添加到. 但是,这会导致:
Form
TabPage
TabControl
Form
该文件指出,该AutoSize
财产只是基础设施,没有相关性TabControl
。TabPage
我发现的大多数“解决方案”都建议使用.Dock = DockStyles.Fill
,这有助于TabControl
现在填充表单,如上所示,而不是只占据更小的部分。然而,表格本身保持不变。
我曾想过使用Panel
' 的大小并使TabControl
' 的大小等于它(或它的函数),但我注意到该Size
参数显然只在Panel
绘制时改变,因为添加 Controls 不会改变它完全没有,所以我必须等待Panel
它绘制然后调整它的大小,这听起来很草率。有更好的解决方案吗?
更新 使用锚定和设置
Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
简单地导致这个: