3

我第一次使用 C# 开发 Windows 窗体应用程序。我正在使用 Visual Studio 2012。

我的表单大小 = 1096x508。我还将最小尺寸和最大尺寸属性设置为 1096x508 。

这是我的应用程序的屏幕截图, 在此处输入图像描述

但是当我在另一台计算机上执行这个应用程序时,结果如下:

在此处输入图像描述

如您所见,红线(在应用程序底部)不可见。因为应用程序的高度在我的电脑上是 508 像素(如预期),但在其他电脑上是 416 像素。正因为如此,红线留在了表格之外。所以我们看不到。

很快,我的表单大小为 1096x508px,但在另一台计算机上仅为 823x416px。你能告诉我为什么有区别吗?我该如何解决这个问题?此屏幕之间存在分辨率差异。

4

2 回答 2

4

您的应用程序在这些计算机上的行为可能是由 Windows 操作系统的不同 dpi(每英寸点数)设置引起的。为了检查,请比较 Windows 显示设置中的实际值(100%、125%、...)。如果您想让您的程序独立于 dpi 设置,您可以尝试使用不同的面板(控制容器)。你的状态栏可以有一个固定的,而游戏区域是一个停靠面板(填充剩余空间)。一般来说,保持独立于实际 dpi 是一个困难的话题。大多数情况下,您可以使用自动调整控件,但如果两个标签重叠,您可能会用完空间。

于 2013-05-04T20:09:30.463 回答
1

正如您已经发现的那样,主要问题是具有不同 DPI 设置的计算机会导致控件缩放。

汉斯在他的链接答案中建议的是,您需要重新设计您的表单,以便当它收到重新调整消息的大小时,它会相应地处理它们。

通常处理这种情况的主要方法是设置Anchor属性或控件的Dock属性。默认情况下,控件将锚定到其父容器的左上角。当它被告知要按比例缩小时,它会向右缩小。通过将锚点更改为仅底部,它将使您的底部控件向上移动而不是向下移动离开父级的边界。

于 2013-05-04T20:30:23.367 回答