操作指南:使用填充、边距和 AutoSize 属性布局控件

在窗体上精确地放置控件对于许多应用程序而言是高优先级。 Visual Studio 中的 Windows 窗体设计器 提供了许多布局工具来完成此作。 最重要的三个属性是MarginPaddingAutoSize,这些属性存在于所有 Windows 窗体控件上。

Margin 属性定义控件周围的空间,该空间使其他控件与控件的边框保持指定距离。

Padding 属性定义控件内部的一段空间,用于将控件的内容(例如,其 Text 属性的值)保持在距控件边框一定的距离。

下图显示了控件上的 PaddingMargin 属性。

Windows 窗体控件的填充和边距

AutoSize 属性告知控件根据其内容自动调整自身大小。 它的大小不会小于其原始 Size 属性的值,并且会考虑其 Padding 属性的值。

先决条件

需要 Visual Studio 才能完成本演练。

创建项目

  1. 在 Visual Studio 中,创建名为 LayoutExampleWindows 应用程序项目。

  2. 在 Windows 窗体设计器中选择窗体

设置控件的边距

可以使用属性 Margin 设置控件之间的默认距离。 将控件移到足够靠近另一个控件的地方时,会看到一个显示两个控件边距的对齐线。 您正在移动的控件也将自动对齐到边距所定义的距离。

使用 Margin 属性在窗体上排列控件

  1. 工具箱中的两个Button控件拖到窗体上。

  2. 选择其中一个 Button 控件并将其移动到另一个控件附近,直到它们几乎触碰。

    观察它们之间出现的对齐线。 此距离是两个控件的值的总和 Margin。 正在移动的控件将自动吸附到此距离。 有关详细信息,请参阅 演练:使用对齐线在 Windows 窗体上排列控件

  3. 更改其中一个控件的Margin属性,通过展开“属性”窗口中的Margin条目,并将All属性设置为20

  4. 选择其中一个 Button 控件并将其移动到另一个控件附近。

    定义边距值总和的对齐线更长,控件与其他控件对齐的距离更大。

  5. 更改所选控件的Margin属性,通过展开Margin“属性”窗口中的条目,并将Top属性设置为5

  6. 将所选的控件移动到另一个控件的下方,观察对齐线变短。 将所选控件移动到另一个控件的左侧,并确保对齐线保持在步骤4中观察到的值。

  7. 可以将Margin属性的每个方面、LeftTopRightBottom设置为不同的值,或者可以将这些方面全部设置为与All属性相同的值。

设置控件的内边距

若要实现应用程序所需的精确布局,控件通常包含子控件。 如果要指定子控件边框与父控件边框的邻近度,请将父控件的属性与子控件PaddingMargin的属性结合使用。 该Padding属性还用于控制控件内容(例如ButtonText控件的属性)与其边框的邻近度。

使用间距调整窗体中控件的布局

  1. Button 控件从“工具箱”拖到窗体上

  2. 将控件AutoSize属性的值Button更改为 true

  3. 更改 Padding 属性:展开 “属性” 窗口中的 Padding 条目,然后将 All 属性设置为 5

    此控件将扩展,为新的填充提供空间。

  4. GroupBox 控件从“工具箱”拖到窗体上。 将 Button 控件从 工具箱 拖动到控件中 GroupBox 。 将控件 Button 定位,使其与控件 GroupBox 的右下角对齐。

    观察当Button控件接近GroupBox控件的底部和右边框时出现的对齐线。 这些对齐线对应于 MarginButton 属性。

  5. 通过在“属性”窗口中展开Padding条目更改GroupBox控件的Padding属性,将All属性设置为20

  6. 选择 Button 控件中的 GroupBox 控件,并将其移动到该 GroupBox控件的中心。

    捕捉线出现在距离控件 GroupBox 边框更远的地方。 此距离是Button控件的Margin属性和GroupBox控件的Padding属性的总和。

自动调整控件大小

在某些应用程序中,控件的大小在运行时与设计时的大小不同。 例如,控件的文本 Button 可能取自数据库,并且其长度事先未知。

当属性 AutoSize 设置为 true时,控件将自身大小调整为其内容。 有关详细信息,请参阅 AutoSize 属性概述

使用 AutoSize 属性排列窗体上的控件

  1. Button 控件从“工具箱”拖到窗体上

  2. 将控件AutoSize属性的值Button更改为 true

  3. Button 控件 Text 的属性更改为 “此”按钮,其 Text 属性具有长字符串

    提交更改时, Button 控件会调整大小以适应新文本。

  4. 将另一个 Button 控件从 工具箱 拖到窗体上。

  5. Button控件的属性更改为“此按钮具有其 Text 属性Text长字符串”。

    提交更改时,控件 Button 不会调整自身大小,并且文本被控件的右边缘剪裁。

  6. “属性”窗口中展开Padding条目,然后将All属性设置为5,以更改Padding属性。

    控件内部的文本在四个方向都被截断。

  7. Button 控件 AutoSize 的属性更改为 true

    控件 Button 调整大小以包含整个字符串。 此外,文本周围已添加填充,导致 Button 控件在所有四个方向上展开。

  8. Button 控件从“工具箱”拖到窗体上。 将其置于靠近表单右下角的地方。

  9. 将控件AutoSize属性的值Button更改为 true

  10. Button 控件 Anchor 的属性设置为 RightBottom

  11. Button控件的属性更改为“此按钮具有其 Text 属性Text长字符串”。

提交更改时,控件会 Button 向左调整其大小。 一般情况下,自动大小调整将按与其 Anchor 属性设置相反的方向增加控件的大小。

AutoSize 和 AutoSizeMode 属性

某些控件支持该 AutoSizeMode 属性,这使你可以更精细地控制控件的自动大小调整行为。

使用 AutoSizeMode 属性

  1. Panel 控件从“工具箱”拖到窗体上

  2. 将控件AutoSize属性的值Panel设置为 true

  3. Button 控件从 工具箱 拖动到控件中 Panel

  4. Button 控件置于控件右下角 Panel 附近。

  5. 选择控件 Panel 并拖动右下角大小控点。 将 Panel 控件的大小调整为更大且更小。

    注释

    可以自由调整控件的大小 Panel ,但不能将其大小调整为小于控件右下角的位置 Button 。 此行为由属性的 AutoSizeMode 默认值指定,即 GrowOnly

  6. 将控件AutoSizeMode的属性的值Panel设置为 GrowAndShrink

    控件 Panel 自动调整其大小,以包围控件 Button 。 不能调整控件的大小 Panel

  7. Button 控件拖动到控件的 Panel 左上角。

    控件 Panel 调整大小至 Button 控件的新位置。

后续步骤

在 Windows 窗体应用程序中排列控件时,还有其他许多布局功能。 下面是你可能尝试的一些组合:

另请参阅