在窗体上精确地放置控件对于许多应用程序而言是高优先级。 Visual Studio 中的 Windows 窗体设计器 提供了许多布局工具来完成此作。 最重要的三个属性是Margin、Padding和AutoSize,这些属性存在于所有 Windows 窗体控件上。
Margin 属性定义控件周围的空间,该空间使其他控件与控件的边框保持指定距离。
Padding 属性定义控件内部的一段空间,用于将控件的内容(例如,其 Text 属性的值)保持在距控件边框一定的距离。
下图显示了控件上的 Padding 和 Margin 属性。
该 AutoSize 属性告知控件根据其内容自动调整自身大小。 它的大小不会小于其原始 Size 属性的值,并且会考虑其 Padding 属性的值。
先决条件
需要 Visual Studio 才能完成本演练。
创建项目
在 Visual Studio 中,创建名为
LayoutExample
的 Windows 应用程序项目。在 Windows 窗体设计器中选择窗体。
设置控件的边距
可以使用属性 Margin 设置控件之间的默认距离。 将控件移到足够靠近另一个控件的地方时,会看到一个显示两个控件边距的对齐线。 您正在移动的控件也将自动对齐到边距所定义的距离。
使用 Margin 属性在窗体上排列控件
将工具箱中的两个Button控件拖到窗体上。
选择其中一个 Button 控件并将其移动到另一个控件附近,直到它们几乎触碰。
观察它们之间出现的对齐线。 此距离是两个控件的值的总和 Margin。 正在移动的控件将自动吸附到此距离。 有关详细信息,请参阅 演练:使用对齐线在 Windows 窗体上排列控件。
选择其中一个 Button 控件并将其移动到另一个控件附近。
定义边距值总和的对齐线更长,控件与其他控件对齐的距离更大。
将所选的控件移动到另一个控件的下方,观察对齐线变短。 将所选控件移动到另一个控件的左侧,并确保对齐线保持在步骤4中观察到的值。
可以将Margin属性的每个方面、Left、Top、Right、Bottom设置为不同的值,或者可以将这些方面全部设置为与All属性相同的值。
设置控件的内边距
若要实现应用程序所需的精确布局,控件通常包含子控件。 如果要指定子控件边框与父控件边框的邻近度,请将父控件的属性与子控件PaddingMargin的属性结合使用。 该Padding属性还用于控制控件内容(例如ButtonText控件的属性)与其边框的邻近度。
使用间距调整窗体中控件的布局
将 Button 控件从“工具箱”拖到窗体上。
更改 Padding 属性:展开 “属性” 窗口中的 Padding 条目,然后将 All 属性设置为 5。
此控件将扩展,为新的填充提供空间。
将 GroupBox 控件从“工具箱”拖到窗体上。 将 Button 控件从 工具箱 拖动到控件中 GroupBox 。 将控件 Button 定位,使其与控件 GroupBox 的右下角对齐。
观察当Button控件接近GroupBox控件的底部和右边框时出现的对齐线。 这些对齐线对应于 Margin 的 Button 属性。
选择 Button 控件中的 GroupBox 控件,并将其移动到该 GroupBox控件的中心。
捕捉线出现在距离控件 GroupBox 边框更远的地方。 此距离是Button控件的Margin属性和GroupBox控件的Padding属性的总和。
自动调整控件大小
在某些应用程序中,控件的大小在运行时与设计时的大小不同。 例如,控件的文本 Button 可能取自数据库,并且其长度事先未知。
当属性 AutoSize 设置为 true
时,控件将自身大小调整为其内容。 有关详细信息,请参阅 AutoSize 属性概述。
使用 AutoSize 属性排列窗体上的控件
将 Button 控件从“工具箱”拖到窗体上。
将 Button 控件 Text 的属性更改为 “此”按钮,其 Text 属性具有长字符串。
提交更改时, Button 控件会调整大小以适应新文本。
将另一个 Button 控件从 工具箱 拖到窗体上。
将Button控件的属性更改为“此按钮具有其 Text 属性的Text长字符串”。
提交更改时,控件 Button 不会调整自身大小,并且文本被控件的右边缘剪裁。
在“属性”窗口中展开Padding条目,然后将All属性设置为5,以更改Padding属性。
控件内部的文本在四个方向都被截断。
将 Button 控件 AutoSize 的属性更改为 true。
控件 Button 调整大小以包含整个字符串。 此外,文本周围已添加填充,导致 Button 控件在所有四个方向上展开。
将 Button 控件从“工具箱”拖到窗体上。 将其置于靠近表单右下角的地方。
提交更改时,控件会 Button 向左调整其大小。 一般情况下,自动大小调整将按与其 Anchor 属性设置相反的方向增加控件的大小。
AutoSize 和 AutoSizeMode 属性
某些控件支持该 AutoSizeMode
属性,这使你可以更精细地控制控件的自动大小调整行为。
使用 AutoSizeMode 属性
将 Panel 控件从“工具箱”拖到窗体上。
将控件
AutoSizeMode
的属性的值Panel设置为 GrowAndShrink。
后续步骤
在 Windows 窗体应用程序中排列控件时,还有其他许多布局功能。 下面是你可能尝试的一些组合:
使用 TableLayoutPanel 控件生成窗体。 有关详细信息,请参阅 操作指南:使用 TableLayoutPanel 在 Windows 窗体中布置控件。 尝试更改控件Padding的属性的值TableLayoutPanel及其Margin子控件上的属性。
使用 FlowLayoutPanel 控件尝试相同的试验。 有关详细信息,请参阅 演练:使用 FlowLayoutPanel 在 Windows 窗体上排列控件。
试验控件中的 Panel 停靠子控件。 该Padding属性是DockPadding属性的更通用实现。您可以通过将子控件放在Panel控件中,并将子控件的Dock属性设置为Fill,来证明这一点。 将 Panel 控件 Padding 的属性设置为各种值并记下效果。