自动调整包含 TabControl 的表单大小

Was*_*abi 2 c# tabcontrol winforms

我有一个带有一堆控件的 Windows 窗体,它工作得很好。所有控件都包含在一个中,TableLayoutPanel该控件根据控件基本大小自动调整大小,并Form根据面板自动调整大小,因此我实际上不必担心不同平台和计算机中的大小,因为所有内容都应根据当前配置的设置调整大小。

例如,这是一个简单的例子来说明它的外观。相关代码是:

//...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();
Run Code Online (Sandbox Code Playgroud)

对话框示例

我现在想要获取整个面板并将其放置在 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();
Run Code Online (Sandbox Code Playgroud)

所以基本上,我不是将 the 添加PanelForm,而是将其TabPage添加到 添加到 的 ,TabControl然后将其添加到Form。然而,这会导致: 结果

文件指出,和AutoSize的财产仅仅是基础设施,没有任何相关性。我发现的大多数“解决方案”都建议使用,这有助于TabControlTabPage.Dock = DockStyles.FillTabControl现在填写表格,如上所示,而不是只占据其中的一小部分。然而,表格本身保持不变。

我想过使用 的Panel大小并使 的TabControl大小等于它(或它的函数),但我注意到参数Size显然只在Panel绘制时才改变,因为添加控件不会改变它根本没有,所以我必须等待Panel绘制然后调整它的大小,这听起来很草率。有更好的解决方案吗?

更新 使用锚定和设置

Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
Run Code Online (Sandbox Code Playgroud)

简单地导致这个:

http://img803.imageshack.us/img803/3453/5112013125710pm.jpg

Adr*_*ian 5

为什么不利用锚定而不是设置尺寸呢?如果您将 / 锚定到,Panel那么到的方式与您需要担心的大小相同。它将决定锚定到它的所有其他项目的大小。Top | Left | Right | BottomTabPageTabControlTabControlFormForm