利用Anchor和Dock属性管理WinForm控件

Winform Winform基础介绍 阅读详情
 

利用Anchor和Dock属性管理WinForm控件

开发者在线 Builder.com.cn 更新时间:2007-04-06作者:builder.com.cn 来源:

本文关键词: Zach Smith DOTNET dotnet dotnet .Net .net .NET .NET WinForm Dock Anchor

有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控件的大小时,怎样使它们的窗体保持同步,并与父窗体相称。这可以成为一种让人非常沮丧的情况,尤其是对于有着Web编程背景,转为WinForms的开发者来说。

为了缓解这个问题,.NET框架允许你对子控件设置属性,命令在调整父窗体大小时,它们应该如何运作。用来命令控件在调整大小时动作的两个属性就是“Dock”和“Anchor”。

Dock和Anchor通过将控件连接到它们父窗体的某个位置,而免除了使应用程序具有不可预知界面的麻烦。最好的一点就是设立这些属性不需要任何手写代码。所有事情都可以通过Visual Studio IDE中的点和单击来完成。

Anchor属性

正如名称暗示的那样,这个属性迫使控件将其自身定位在父窗体或父控件中的某个相对或绝对位置。这个属性有四个可以开启或关闭的值:

  • Top——表示控件中与父窗体(或父控件)相关的顶部应该保持固定。
  • Bottom——表示控件中与父窗体(或父控件)相关的底边应该保持固定。
  • Left——表示控件中与父窗体(或父控件)相关的左边缘应该保持固定。
  • Right——表示控件中与父窗体(或父控件)相关的右边缘应该保持固定。

要对一个控件设置Anchor属性,只需在Visual Studio设计器中选择控件,然后转到属性窗口。你会看到一个标注为“Anchor”的属性。点击这个属性值的部分,会出现一个小窗口让你选择想要赋予控件的锚点。图表A所示是选择了“顶边、左边”的anchor设置窗口。图表B所示是选择了“底边、右边”的窗口。

图表A

利用Anchor和Dock属性管理WinForm控件

Anchor工具顶部和左边

图表B

利用Anchor和Dock属性管理WinForm控件

Anchor工具底部和右边

在Visual Studio中,当控件放置于窗体时,默认的anchor设置是“顶部、左边”,这使得控件和窗体的顶边和左边缘固定相关。

到真正发现不同的anchor设置对控件的影响时,你才能体会到锚定的意义。下面的图像会有所帮助。

图表C

利用Anchor和Dock属性管理WinForm控件

小窗口

图表C所示是一个有十个子控件的窗体。每一个子控件都有不同的Anchor属性值,并用它的anchor设置标注。灰白色控件后面的深红色框是另一个子控件——它的Anchor属性被设为顶部、底部、左边和右边。图表D所示是区域被调大以后的同一个窗体。

图表D

利用Anchor和Dock属性管理WinForm控件

大窗口

正如你所看到的那样,每一个控件在父窗体中都自动地保持它的位置。我们没有编写代码来完成这一点;只是简单地设置了控件的Anchor属性。

有几个重要的地方不得不提。一个就是如果你没有指定一个控件有左或右锚定,它将在父窗体中保留一个相对左/右位置。如果你没有指定一个控件是否有顶部或底部锚定,也是一样的。对于这一点,一个很好的例子就是标注为“无Anchor”的控件。这样的控件没有锚定值,所以它只是漂浮在窗体中央。

另一个极端就是选择了所有anchor值的控件(顶部、底部、左边、右边)。对这一点,图表C和图表D中其它控件后面的深红色方形可见物就是一个例子。当选择了所有的anchor值时,控件只是在调整父窗体大小时,随着增大和收缩——与窗体的边缘比较起来它的所有边缘保持静止不变。

Dock属性

Dock属性迫使控件紧贴父窗体(或控件)的某个边缘。虽然Anchor属性也可以实现这一点,但是dock属性使得你能够在父窗体中让子窗体可以在上方(或旁边)互相“堆叠”。如果某个子窗体改变了大小,其它停驻在它旁边的子窗体也会随之改变。

和Anchor属性不同的是,你可以将Dock属性设置为一个单值。有效值如下所示:

  • Top——迫使控件位于父窗体(或控件)的顶部。如果有同一个父窗体的其它子控件也被设置为停驻在顶部的话,那么控件将在彼此上方相互堆叠。
  • Bottom——迫使控件位于父窗体(或控件)的底部。如果有同一个父窗体的其它子控件也被设置为停驻在底部的话,那么控件将在彼此上方相互堆叠。
  • Left——迫使控件位于父窗体(或控件)的左边。如果有同一个父窗体的其它子控件也被设置为停驻在左边的话,那么控件将在彼此旁边相互堆叠。
  • Right——迫使控件位于父窗体(或控件)的右边。如果有同一个父窗体的其它子控件也被设置为停驻在右边的话,那么控件将在彼此旁边相互堆叠。
  • Fill——迫使控件位于父窗体(或控件)的上方。如果有同一个父窗体的其它子控件也被设置为停驻在上方的话,那么控件将在彼此上方相互堆叠。
  • None——表示控件将会正常运转。

要设置一个控件的Dock值,选择Visual Studio中的控件,然后转到属性窗口。你会看到一个标注为“Dock”的属性。点击这个属性的值的部分,会出现一个小窗口让你指定该控件将如何停驻。被赋予各种值的该窗体将显示在以下图像中(图表E、图表F和图表G):

图表E

利用Anchor和Dock属性管理WinForm控件

选择停驻左边

图表F

利用Anchor和Dock属性管理WinForm控件

选择停驻填充

图表G

利用Anchor和Dock属性管理WinForm控件

选择停驻顶部

和Anchor属性一样,直到发现它起了作用,你才会意识到它们的重要意义。图表H所示的是一个有5个子控件的窗体,每个子窗体都设置了不同的dock值。

图表H

利用Anchor和Dock属性管理WinForm控件

有不同dock值的5个子控件

图表I所示的是和图表H一样的窗口,除了一点,就是现在窗口已经被调整为更大的轨迹。

图表I

利用Anchor和Dock属性管理WinForm控件

更大的轨迹

图表J又显示的是和图表H一样的窗口,这次不同的是位于窗体底部、顶部、左边和右边的控件变小了。注意位于窗体中间被设置为dock Fill的控件,自动变大了。

图表J

利用Anchor和Dock属性管理WinForm控件

更小的轨迹

需要记住的是,对于Dock属性,添加控件的顺序会影响它们停驻的方式。例如,如果你对窗体添加控件A,指示其停驻填充,然后你对窗体添加控件B并指示其停驻顶部,控件B将覆盖控件A的上部。原因就是控件B被认为是在控件A的“前方”,因为它是在控件A之后添加的。

要解决这种情况,你必须在Visual Studio中右击控件A,并在上下文菜单中选择“放到前面(Bring To Front)”。这样就能使控件A出现在控件B的前方,控件也就能像预期的那样运作了。

示例程序

要想完全了解怎样使用Dock和Anchor属性,你可以下载包含在这篇文章下载版本中的示例程序。在这个程序中,有几个示范Dock和Anchor不同用法的窗体。自学这种功能的最好方法就是深入代码之中,亲自动手。

WinForm自适应缩放避坑指南:为什么你的Anchor和Dock总是不生效? 本文深入解析WinForm自适应布局中Anchor和Dock属性的常见问题,提供7个实战技巧帮助开发者避开高DPI和动态布局的陷阱。从锚定属性的比例守恒到停靠属性的隐藏冲突,再到高DPI环境下的终极解决方案,全面掌握WinForm窗体自适应的正确方法。 阅读详情

相关推荐

WinForm Panel控件详解:从核心属性到动态布局与性能优化

在C#桌面应用开发中,容器控件是构建清晰、可维护界面的基础。容器通过提供独立的坐标上下文和生命周期管理,将功能相关的控件组合成逻辑模块,从而简化布局逻辑。其核心原理在于对子控件的坐标、尺寸和可见性进行统一管理,这为动态界面生成和复杂布局提供了底层支持。从技术价值看,熟练运用容器能显著提升开发效率,告别硬编码坐标,实现自适应界面。在实际应用场景中,无论是实现标签页切换、创建可折叠区域,还是集成第三方控件(如Halcon的HSmartWindowControl),容器都是不可或缺的基石。本文聚焦于WinForm

weixin_34195364的博客 379

C#基础学习之——(一)Dock与Anchor

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Dock与Anchor是什么?1.Dock2.Anchor二、使用步骤1.设计界面2.使用Anchor与Dock总结 前言 C#基础学习之——(一)Dock与Anchor 最近在对窗体控件进行布局时,发现了Dock与Anchor这两种不同的窗体布局属性,所以查阅了一些资料,在这里进行记录。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Dock与Anchor是什么? 1.Dock ①Dock在英文中是停泊的意

qq_42413826的博客 2433

WinForm控件添加与布局实战:从拖拽到动态创建与自适应界面

在C#桌面开发中,控件是构建用户界面的核心基础元素,如同应用程序的“积木”。其本质是拥有属性、方法和事件的对象模型,通过事件驱动机制响应用户交互,构成了WinForm快速开发的基石。这种成熟稳定的控件体系,使得开发者能够高效构建企业内部系统和工具软件界面。在实际应用中,控件的添加主要分为设计时拖拽与运行时动态创建两种方式,前者适合固定布局,后者则能根据数据或条件动态生成界面。掌握控件的公共属性(如Dock、Anchor)和布局容器(如TableLayoutPanel、FlowLayoutPanel),是实现

353

Winform多个容器控件设置Dock属性为fill时出现包含情况解决办法

当一个Winform窗体内存在多个普通的或者容器类控件时,可能会在设置Dock属性时遇到控件遮盖的现象,本文对该现象做了简单剖析并提出了解决方案。

YMGogre的博客 3415

C# WinForm控件开发指南:从基础控件到实战应用

在C#桌面开发中,控件是构建用户界面的核心组件,它们作为程序与用户交互的桥梁,负责数据的输入、展示和操作响应。控件的原理基于事件驱动模型,通过属性、事件和布局三大要素协同工作,实现丰富的交互逻辑。掌握控件的使用不仅能提升开发效率,还能构建出专业、易用的应用程序界面,在企业管理软件、数据录入系统、工具软件等场景中广泛应用。本文聚焦WinForm控件的核心概念,深入解析常用控件的特性与实战技巧,涵盖按钮、文本框、数据网格等关键组件,帮助开发者从基础入门到灵活运用,快速构建功能完善的桌面应用。

weixin_30889885的博客 362

WinForm开发中Panel控件的核心应用与高级技巧详解

在桌面应用开发中,容器控件是实现复杂界面布局和功能分区的基石。其核心原理在于通过逻辑分组和统一管理,将相关UI元素组织在一起,从而提升代码的可维护性和界面结构的清晰度。这一技术价值体现在能够高效构建动态内容加载、选项卡切换、可折叠区域等高级交互场景。例如,在C# WinForm开发中,Panel控件作为最基础的容器,通过其Dock、Anchor、AutoScroll等关键属性,结合SuspendLayout/ResumeLayout性能优化方法,可以解决界面闪烁、内存管理等常见工程问题。本文聚焦Panel控

weixin_30781775的博客 496

winfrom窗体的Anchor属性、Dock属性

winfrom窗体的Anchor属性、Dock属性

3655

C# WinForm窗体及控件自适应设计指南

本文还有配套的精品资源,点击获取 简介:在C#编程中,WinForm用于创建桌面应用程序,包含丰富的GUI元素。本文详细讲解了如何实现WinForm窗体及其控件的自适应布局,以适应不同分辨率和屏幕尺寸。介绍了使用百分比定位、调整大小事件、anchoring和docking、TableLayoutPanel和FlowLayoutPanel容器控件、响应式设计以及AutoSiz...

weixin_42515842的博客 3602

C# 界面布局之Dock,Anchor,容器控件心得

背景 近几个月都用的WPF,结果发现很多代码都是WinFrom的,一直想学下WinForm的,恰好今天要用下。就拿了别人的源码,增加些控件与功能,然后界面不太规范,所以边学边改之,第一天弄WinForm界面。有必要记下免得忘了。 目标: 重点要解决的问题,如何让窗口在拖动的时候,某些控件是固定在某个角落。而某些控件是需要随着窗口变化而放大缩小的。 思路原理: 要实现所说功

rentao315的专栏 1万+

卫星图像检测,分割,跟踪,超分辨率,数据集调研,以及论文笔记

目标检测,针对物体有很多类如桥,烟囱,罐子等,有静态图像下的检测,也就是图像源头多来自谷歌地图,但是前后帧没有任何联系,并且谷歌地图相对来说比较清楚,难度小一点,也有粗粒度以及较细粒度的检测,然后卫星视频的数据集较少,则可以通过前后帧的联系来辅助检测,并且卫星帧基本上只对车,船,飞机,火车进行检测,没有进行细粒度的检测即将车辆分类为卡车,皮卡,小轿车,但是关船,则可以分类为货船以及军舰,因为目前的卫星视频中小车实在太少了,难以进行更细粒度的检测。luojia 三号卫星。

zhangzhao147的博客 4707

linux下docker 部署onlyoffice社区版

Onlyoffice 是一款功能丰富的在线 Office 工具,类似 WPS 和 微软的 Office 套件。OnlyOffice Workspace 是由 OnlyOffice 推出的基于云计算的企业级在线协作办公平台,由文档服务(Document Server)、控制面板(Control Panel)、社区服务(Community Server)和邮件服务(Mail Server)四个组件构成,提供了文档、项目、成员、邮件等功能模块,支持文档多人协作、历史版本控制等功能,旨在帮助用户提高工作效率和工作质

axiaowua的博客 2382

winform anchor dock

在WinForms(Windows Forms)开发中,Anchor和Dock是两种常用的布局管理工具,它们帮助开发者控制控件在窗体(Form)或容器(如Panel、GroupBox等)内的位置和大小变化。

az44yao的专栏 663

自定义控件三部曲视图篇(六)——RecyclerView系列之三自定义LayoutManager

前言:把握生命里的每一分钟,全力以赴我们心中的梦,不经历风雨 怎么见彩虹,没有人能随随便便成功 在第一篇中已经讲过,LayoutManager主要用于布局其中的Item,在LayoutManager中能够对每个Item的大小,位置进行更改,将它放在我们想要的位置,在很多优秀的效果中,都是通过自定义LayoutManager来实现的,比如: 可以看到这些效果都非常棒,通过这一节的学习,大...

启舰 1万+

WinForm控件Anchor属性和Dock属性的区别

有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控件的大小时,怎样使它们的窗体保持同步,并与父窗体相称。这可以成为一种让人非常沮丧的情况,尤其是对于有着Web编程背景,转为WinForms的开发者来说。 为了缓解这个问题,.NET框架允许你对子控件设置属性,命令在调整父窗体大小时,它们应该如何运作。用来命令控件在调整大小时动作的两个属性就是“Dock”和“Anch

linybo的专栏 4956

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 529

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

statistics+insight+vista+power 1481

【WinForm.NET开发】如何停靠和定位控件

如果要设计用户可以在运行时重设大小的窗体,窗体上的控件应正确重设大小并重新定位。当窗体更改其大小时,控件有两个属性可帮助自动放置和调整大小。停靠的控件填充控件容器(窗体或容器控件)的边缘。例如,Windows 资源管理器将其控件停靠在窗口的左侧,将其控件停靠在窗口的右侧。停靠模式可以是控件容器的任何一侧,也可以设置为填充容器的剩余空间。控件以反向 z 顺序停靠,且属性与属性交互。重设已定位的控件窗体的大小后,控件将保持它与定位点位置之间的距离。例如,如果你有一个定位在窗体左边缘、右边缘和下边缘的。

Coding life, Coding world, Coding feature. 1784

C#上位机通信层封装:西门子S7NetPlus库的优雅使用

支持S7-1200/1500(机架号0,槽号1)、S7-300/400(机架号/槽号需根据实际配置);支持位(Bit)、字节(Byte)、字(Word)、双字(DWord)、浮点数(Float/Double)等数据类型的读写;支持DB块、输入寄存器(I)、输出寄存器(Q)、内存寄存器(M)、定时器(T)、计数器(C)的操作;轻量无依赖,兼容.NET 5+。首先定义核心枚举和常量,统一规范参数类型,避免硬编码。/// 西门子PLC型号(对应不同的机架/槽号默认配置)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1085

Windows Forms 布局管理深度解析:掌握Anchor和Dock的使用技巧

Windows Forms 是 .NET 框架中用于构建 Windows 桌面应用程序的 UI 框架。在开发 Windows Forms 应用程序时,布局管理是一个至关重要的环节,它决定了控件在不同屏幕分辨率和窗口大小下的显示效果。本文将深入解析 Anchor 和 Dock 两种核心布局机制,帮助您掌握专业级的布局技巧!🚀 ## 什么是 Anchor 和 Dock 布局? 在 Windows

gitblog_01109的博客 830

Win11右下角不显示图标怎么办?Win11右下角不显示图标的解决方法

所以有不少符合资格的小伙伴都下载进行体验了,但是有的小伙伴在升级完系统之后发现桌面右下角不显示任何图标,那么遇到这种情况要怎么办呢?下面就和小编一起来看看有什么解决方法吧。2、接着找到任务栏设置中的“taskbar corner overflow”。3、然后在下方勾选打开想要显示的图标程序就可以了。1、首先右键任务栏,在其中选择“任务栏设置”。目前微软已经正式推出了。

2401_88800025的博客 885
上一篇: 强子对撞机下午3时半开始一次全轨道试验,如果产生黑洞,人类将在今日消失
下一篇: Reflector已经支持中文
「已注销」
博客等级 码龄25年 93粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值