我创建了一个winform应用程序。每个屏幕的大小为1361,像素为768。这适用于大屏幕和/或笔记本电脑。但现在我必须将我的应用程序移动到10英寸屏幕平板电脑,这意味着我的应用程序不适合。
我以前从未处理过这个问题,如何在较小的屏幕上查看时如何自动调整每个表单大小并调整所有控件和面板?
我正在使用VS 2012。
答案 0 :(得分:8)
使表单在WinForms中完全可扩展是可能的,但它需要一些工作。好消息是,大部分工作都是在设计时完成的,正确安排控件,以便框架自动完成所有工作。这是一种苦差事,但并不困难。很高兴您不必像使用VB 6那样逐个手工编写缩放代码。
您需要熟悉四个基本属性:
最后两位应该是熟悉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开发者的脚跟。
答案 1 :(得分:1)
尝试获取分辨率变量来调整屏幕,有一个答案可以使用Screen类来获取这些变量
答案 2 :(得分:1)
DevExpress有一个很棒的控件调用布局控件。在调整窗体大小时,此控件有助于在控件之间保持一致的空白。确实需要一些研究来有效地使用控件,但是一旦你理解了如何使用这个控件,结果是一致的,你就可以加快表单设计。