【WinForm.NET开发】使用 Padding、Margin 和 AutoSize 属性布置控件

news2024/9/24 6:25:00

本文内容

  1. 创建项目
  2. 设置控件的边距
  3. 设置控件的填充
  4. 自动调整控件大小
  5. AutoSize 和 AutoSizeMode 属性
  6. 后续步骤

在窗体上精确地放置控件对于许多应用程序而言是高优先级。 Visual Studio 中的 Windows 窗体设计器提供了许多布局工具来实现此目的。 其中三个最重要的是 Margin、Padding 和 AutoSize 属性,它们出现在所有 Windows 窗体控件上。

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

Padding 属性定义控件内部的空间,该空间使控件的内容(例如,其 Text 属性的值)与该控件的边框保持指定的距离。

下图显示控件上的 Padding 和 Margin 属性。

vs-winformpadmargin.gif?view=netframeworkdesktop-4.8

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

1、创建项目

  1. 在 Visual Studio 中,创建一个名为 LayoutExample 的 Windows 应用程序项目。

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

2、设置控件的边距

可以使用属性 Margin 设置控件之间的默认距离。 将控件移动到足够接近另一个控件时,将看到一个显示两个控件边距的对齐线。 要移动的控件还将对齐到边距定义的距离。

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

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

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

    观察它们之间的对齐线。 此距离是两个控件的 Margin 值之和。 正在移动的控件将对齐到该距离。 

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

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

    定义边距值总和的对齐线更长,并且该控件对齐到与另一个控件的更远距离。

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

  6. 将所选控件移到其他控件下方,并观察对齐线是否较短。 将所选控件移动到另一个控件的左侧,并观察对齐线是否保留了在步骤 4 中观察到的值。

  7. 可以将 Margin 属性、Left、Top、Right、Bottom 的每个方面设置为不同的值,也可以使用 All 属性将它们全部设置为相同的值。

3、设置控件的填充

为了实现应用程序所需的精确布局,控件通常包含子控件。 如果要指定子控件的边框与父控件的边框的邻近度,请结合使用父控件的 Padding 属性和子控件的 Margin 属性。 Padding 属性还用于控制控件内容到其边框的邻近度,例如 Button 控件的 Text 属性。

使用 Padding 属性在窗格上排列控件

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

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

  3. 通过展开“属性”窗口中的 Padding 条目并将 All 属性设置为 5 来更改 Padding 属性。

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

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

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

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

  6. 选择 GroupBox 控件中的 Button 控件并将其移向 GroupBox 的中心。

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

4、自动调整控件大小

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

当 AutoSize 属性设置为 true 时,控件将根据其内容调整自身大小。 

使用 AutoSize 属性在窗格上排列控件

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

  2. 将 Button 控件的 AutoSize 属性的值更改为 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. 将 Button 控件的 AutoSize 属性的值更改为 true。

  10. 将 Button 控件的 Anchor 属性设置为 Right、Bottom。

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

提交更改时,Button 控件会向左调整自身大小。 通常,自动调整大小会在与其 Anchor 属性设置相反的方向上增加控件的大小。

5、AutoSize 和 AutoSizeMode 属性

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

使用 AutoSizeMode 属性

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

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

  3. 将 Button 控件从工具箱拖入 Panel 控件。

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

  5. 选择控件 Panel 并抓取右下角的大小调整手柄。 将 Panel 控件的大小调整为更大和更小。

     备注

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

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

    Panel 控件调整自身大小以围绕 Button 控件。 无法调整 Panel 控件的大小。

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

    Panel 控件调整到 Button 控件的新位置。

6、后续步骤

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

  • 使用 TableLayoutPanel 控件生成窗体。 尝试更改 TableLayoutPanel 控件的 Padding 属性及其子控件的 Margin 属性的值。

  • 使用 FlowLayoutPanel 控件尝试相同的实验。 

  • 尝试在 Panel 控件中停靠子控件。 Padding 属性是 DockPadding 属性的更一般的实现,你可以通过将子控件放入 Panel 控件并将子控件的 Dock 属性设置为 Fill。 将 Panel 控件的 Padding 属性设置为各种值并记下效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1311032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

孩子都能学会的FPGA:第三十一课——用FPGA实现SPI主机发送数据

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

保障网络安全:了解威胁检测和风险评分的重要性

在当今数字时代,网络安全问题变得愈发突出,而及时发现和迅速应对潜在威胁成为保障组织信息安全的首要任务。令人震惊的是,根据2023年的数据,平均而言,检测到一次网络入侵的时间竟然长达207天。这引起了对安全策略和技术…

java设计模式学习之【代理模式】

文章目录 引言代理模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用图片加载示例代码地址 引言 在现实生活中,我们经常使用代理来处理我们不想直接参与或无法直接参与的事务,例如,使用律师来代表法庭上的案件。在软件开发…

2023微博AIGC算法工程师一面 面试题

来源:投稿 作者:LSC 编辑:学姐 一面 35min左右,主要是根据简历发问的 1.自我介绍 介绍实习项目, 聊的比较详细,但是我实习项目限制比较多,做的不够深入。 2.多标签分类的损失函数 多标签分类任务&#x…

SOLIDWORKS Motion运动平台减速运动分析

SOLIDWROKS motion是SOLIDWORKS中一个高性能的插件,能够帮助设计中完成虚拟样机的仿真分析工具,motion既可以对众多的机械结构进行运动学和动力学仿真,同时也可以反馈机械设备的速度、加速度、作用力等,在SOLIDWROKS motion完成样…

ArrayList与顺序表(带完整实例)

【本节目标】 1. 线性表 2. 顺序表 3. ArrayList的简介 4. ArrayList使用 5. ArrayList的扩容机制 6. 扑克牌 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表…

骨灰级程序员那些年曾经告诉我们的高效学习的态度

一、背景 以前阅读陈皓老师的左耳听风专栏中关于如何高效学习的总结让我收货颇丰,今天总结了一下,分享给大家 老师说: 学习是一件“逆人性”的事,就像锻炼身体一样,需要人持续付出,会让人感到痛苦&#…

PFA气体吸收瓶耐强酸PFA洗气瓶PFA鼓泡瓶特点分析

洗气瓶的别称有多种,取决于不同的地区和行业。以下是一些常见的别称: 1. 清洗瓶:因其主要用途是清洗气体样品而得名。 2. 干燥瓶:用于干燥气体样品的容器。 3. 气体净化瓶:用于净化气体样品的设备。 4. 气体清洗器…

再回首感知损失在low-level上的应用

《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》是李飞飞团队在2016年发表于ECCV的文章。我近几年的工作中,所训练的模型都离不开感知损失。不得不感慨,大佬之所以是大佬,就是因为他们开创性的工作很多年后依然为人…

淘宝api接口测试方式(item_get-获得淘宝商品详情)

注册淘宝开放平台账号:首先,你需要在淘宝开放平台上注册一个账号,并创建一个应用。获取App Key和Secret Key:在创建应用后,你会获得App Key和Secret Key,这些凭证将用于调用API。了解淘宝商品详情接口&…

探索性能测试的奥秘:流程与工具大揭秘!

一、性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 1.1 类别 性能测试包括负载测试、压力测试、基准测试等。 1.1.1 负载测试 通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证…

PCL点云处理之反算两块点云的放缩比例 (二百二十三)

PCL点云处理之反算两块点云的放缩比例 (二百二十三) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 在 PCL点云处理之等比例放大与缩小点云尺寸(七十二)一章中,介绍了如何等比例放大缩小一块点云,这里介绍如何反算得到两片经过放缩的点云之间的比例,这种计算方法应…

事务隔离级别:保障数据库并发事务的一致性与性能

目录 引言 1. 事务隔离级别概述 2. 读未提交隔离级别 3. 读已提交隔离级别 4. 可重复读隔离级别 5. 串行化隔离级别 6. 保障事务隔离级别的机制 7. 如何选择合适的隔离级别 8. 结语 引言 在数据库管理系统(DBMS)中,事务隔离级别是一…

【开源软件】最好的开源软件-2023-第18名 OpenTelemetry

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

Qt之Ui样式表不影响子类的配置

Qt之Ui样式表不影响子类的配置 问题 在ui界面上布局时,当对容器进行样试设计时,会对容器内其它成员对象也进行了修改 分析 对应*.ui文件内容 从这个写法来看,它的样式属性会影响其成员对象样式属性。 解决方法 在容器的样式表中写时适…

Numpy 实现C4.5决策树

C4.5 信息增益比实现决策树 信息增益比 g R ( D , A ) g ( D , A ) H ( D ) g_{R}(D, A)\frac{g(D, A)}{H(D)} gR​(D,A)H(D)g(D,A)​ 其中, g ( D , A ) g(D,A) g(D,A)是信息增益, H ( D ) H(D) H(D)是数据集 D D D的熵 代码实现 import numpy as …

AI全栈大模型工程师(二十四)常用的超参

文章目录 七、先介绍几个常用的超参7.1、过拟合与欠拟合7.2、学习率调整策略八、自然语言处理常见的网络结构8.1、文本卷积神经网络 TextCNN8.2、循环神经网络 RNN8.3、Attention (for RNN)后记七、先介绍几个常用的超参 7.1、过拟合与欠拟合 奥卡姆剃刀: 两个处于竞争地位的…

Kafka事务是怎么实现的?Kafka事务消息原理详解(文末送书)

目录 一、Kafka事务性消息1.1 介绍Kafka事务性消息1.2 事务性消息的应用场景1.3 Kafka事务性消息的优势 二、Kafka事务性消息的使用2.1 配置Kafka以支持事务性消息生产者配置消费者配置 2.2 生产者:发送事务性消息创建Kafka生产者开始事务发送消息提交或中止事务 2.…

MATLAB 最小二乘直线拟合方法二 (36)

MATLAB 最小二乘直线拟合方法二 (36) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 这里介绍另一种拟合直线点云的方法,更为简单方便,结果与前者一致,主要内容直接复制代码使用即可,原理简单看代码即可,下面是具体的实现和拟合结果展示 二、算法实现 1.代码 代…

wappalyzer基于插件的网站开发技术解析工具

一、wappalyzer 解释:这是一款强大的工具,其主要能提供一种快速、可靠地检测网站所使用技术栈的方法,也就说说,服务器发来的信息都会被它剖析,然后分析出前端的技术栈,有时后端所使用的技术栈如果网页特征…