【问题标题】:Automatically adjusting winform and controls to screen size自动调整winform和控件以适应屏幕大小
【发布时间】:2014-04-24 03:26:04
【问题描述】:

我创建了一个 winform 应用程序。每个屏幕的大小为 1361、768 像素。这适用于更大的屏幕和/或笔记本电脑。但是现在我必须将我的应用程序移到 10 英寸屏幕的平板电脑上,这意味着我的应用程序不适合。

我以前从未处理过这个问题,如何在较小的屏幕上查看时自动调整每个表单大小并调整所有控件和面板?

我正在使用 VS 2012。

【问题讨论】:

标签: vb.net winforms


【解决方案1】:

在 WinForms 中使表单完全可扩展是可能的,但需要一些工作。好消息是,大部分工作都是在设计时完成的,适当地安排控件,以便框架自动为您完成所有工作。这是苦差事,但并不难。庆幸您不必像使用 VB 6 那样逐个表格地手动编写缩放代码。

您需要了解四个基本属性:

最后两位应该是熟悉 CSS 的 Web 开发人员——他们在这里做同样的事情。填充控制控件周围的内边距,而边距控制外边距。您需要正确设置这些以确保您的控件可以“呼吸”,因为自动缩放代码只会将它们彼此卡住。

Windows 桌面应用程序中控件周围的“标准”边距约为 12–15 像素。您应该确保至少留出这么多空间。然后添加您认为合适的额外边距/填充以分隔事物。我保留these layout specifications 书签以供参考。 This 是另一个很好的参考。

下一步是指示布局管理器您希望控件如何排列和调整大小。关键在于考虑 container 控件和 child 控件。表单本身是一个容器控件,您可以在其边界内将其 child 控件设置为 Anchor 或 Dock。这些子控件中的一个或多个本身可以是容器控件,并且其子控件可以锚定或停靠在其边界内。嵌套实际上是无限的,但为了您自己的理智和合理的重绘性能,您需要将其保持在合理的最小值。

这样做的一个好方法是使用两个提供的不可见布局助手,FlowLayoutPanel 和 TableLayoutPanel。就个人而言,我不觉得前者非常有用,至少对于标准的 Windows 应用程序来说不是。但是 TableLayoutPanel 是无价的。

通常我会用 TableLayoutPanel 填充整个表单(边距 = 0,停靠 = 填充)。然后,我将向其单元格添加单独的控件(或有时是另一个嵌套的 TableLayoutPanel)。这些子控件的边距将适当设置,并且将设置其 Anchor 或 Dock 属性,具体取决于我希望该控件具有固定大小还是动态调整大小。

在了解这些属性如何交互以及它们是如何工作的之前,您可能需要先尝试一下您的布局。备份您的表单,然后深入研究。或者,您可能会发现从头开始设计每个表单更容易(您仍然可以复制和粘贴单个控件以保留它们的其他属性)。最终,这一切都会开始对你有意义,你很快就会起床。

最棒的是,一旦设置完成,您所要做的就是确保您的表单可以调整大小。然后,无论用户手动调整大小还是使用最大化/恢复按钮,它都会自动填充他们的屏幕大小。这也适用于所有 DPI 设置,这是 WinForms 开发人员的另一个常见致命弱点。

【讨论】:

    【解决方案2】:

    尝试获取分辨率变量来调整您的屏幕,有一个答案可以使用 Screen 类获取这些变量

    Getting Screen Resolution

    【讨论】:

      【解决方案3】:

      DevExpress 有一个很棒的控件,叫做布局控件。此控件有助于在调整表单大小时在控件之间保持一致的空白。有效地使用控件确实需要进行一些研究,但是一旦您了解如何使用此控件,结果是一致的,并且您能够加快表单设计的速度。

      【讨论】:

        猜你喜欢
        • 2021-10-31
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 2011-02-03
        • 1970-01-01
        相关资源
        最近更新 更多