3

我有一个带有一堆控件的 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到,而是将其添加到 添加到添加到. 但是,这会导致: FormTabPageTabControlForm结果

该文件指出,该AutoSize财产只是基础设施,没有相关性TabControlTabPage我发现的大多数“解决方案”都建议使用.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;

简单地导致这个:

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

4

2 回答 2

6

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

于 2013-05-11T15:09:19.880 回答
-1

.AutoScaleMode = None面板的设计器中用作用户控件。在我的情况下 TabControl-TabPage-myPage 它可以工作。

于 2014-04-01T13:01:22.033 回答