我以前从未处理过这个问题,如何在较小的屏幕上查看时如何自动调整每个表单大小并调整所有控件和面板?
我正在使用VS 2012.
您需要了解四个基本属性:
> Anchor
> Dock
> Margin
> Padding
最后两位应该是熟悉CSS的熟悉的Web开发人员 – 他们在这里做同样的事情.填充控制控件周围的内边距,而边距控制外边距.您需要正确设置这些以确保您的控件可以“呼吸”,因为自动缩放代码只是将它们相互阻塞.
Windows桌面应用程序中控件周围的“标准”边距约为12-15像素.你应该确保至少离开这么多房间.然后根据需要添加额外的边距/填充以分隔内容.我保留these layout specifications书签作为参考. This是另一个很好的参考.
下一步是指示布局管理器如何排列和调整控件的大小.关键是要考虑容器控制和儿童控制.表单本身是一个容器控件,您可以将其子控件设置为其边界内的Anchor或Dock.这些子控件中的一个或多个本身可以是容器控件,其子控件可以在其边框内锚定或停靠.嵌套几乎是无限的,但为了您自己的理智和合理的重绘性能,您需要将其保持在合理的最小值.
这样做的一个好方法是使用两个提供的隐形布局帮助器,FlowLayoutPanel
和TableLayoutPanel
.就我个人而言,我发现前者非常有用,至少不是标准的Windows应用程序.但TableLayoutPanel是非常宝贵的.
一般来说,我要做的是用TableLayoutPanel填充我的整个表单(marginins = 0,dock = fill).然后我将向其单元格添加单个控件(或有时是另一个嵌套的TableLayoutPanel).这些子控件的边距设置正确,并且将设置其Anchor或Dock属性,具体取决于我是希望该控件具有固定大小还是动态调整大小.
在您了解这些属性如何交互以及它们如何工作之前,您可能需要稍微调整一下布局.备份表单然后深入挖掘.或者,您可能会发现从头开始设计每个表单更容易(您仍然可以复制并粘贴单个控件以保留其他属性).最终,这一切都将开始对你有意义,你将会兴奋起来.
最棒的是,一旦完成设置,您所要做的就是确保您的表单可以调整大小.然后,无论用户手动调整大小还是使用最大化/恢复按钮,它都会自动填充其屏幕大小.这也适用于所有DPI设置,这是WinForms开发人员的另一个常见的致命弱点.