如何根据分辨率调整控件大小?

3
在WinForms应用程序中,如何最好地处理重新调整控件以匹配屏幕分辨率和最大化和重新调整窗口大小的问题呢?我有3个列设置如下:每个列中都有一个标签文本框。你可以将其视为6个列。我尝试过将其锚定到右侧,但问题在于第一列中的文本框会重叠到下面的两列。我也尝试过停靠,但似乎不起作用。有没有更简单的方法来解决这个问题?
3个回答

3
TL;DR: 没有手动编写调整逻辑的方法。顺便说一句,您可能不应该尝试这样做。
在传统的WinForms中,据我所知,没有自动方式,除非您自己编写解决方案。Sean87建议使用AutoScaleMode属性,但虽然它是自动的,但它不支持按分辨率进行自动调整大小。它提供了根据Windows中的字体大小设置或DPI设置进行缩放的选项。当仅更改屏幕分辨率时,这些选项都不会直接更改,并且老实说,大多数典型用户(甚至可能是高级用户)可能从未修改过DPI或字体大小设置。
此外,从基本用户角度来看,增加屏幕分辨率的整个意义在于为应用程序窗口提供更多的虚拟桌面“空间”。确实,现在大多数显示器都是液晶显示器,因此具有使改变分辨率成为CRT时代的事情的本机分辨率。但是,购买一台新的、更大的显示器会让普通用户增加这个虚拟屏幕空间,以便他们可以同时在屏幕上看到更多的窗口。我认为,一个始终保持相对大小与屏幕分辨率相同的应用程序是非常不常见的,而且违背了大多数用户的期望,包括我们这些高级开发者用户。
通常,您需要编写应用程序以智能和有用地调整其内容,如果窗口被调整大小,但通常您会将其推迟给用户进行管理,因为这是他们的机器和他们的偏好(把它看作是“我的房子,我的规则”原则)。这也是为什么大多数(所有?)应用程序除非直接由用户操作(通过拖动窗口框架等),否则不会改变窗口位置的原因。事实上,所有这些可能解释了为什么微软选择基于分辨率包括任何自动调整规则。

1
你没有定义“column”指的是什么。通常,你应该使用TableLayoutPanel,在每个“cell”内设置控件的锚定点。

0

您可以更改窗体的AutoScaleMode,还可以自动调整每个控件的大小属性。您可能会使用SplitContainer或Panel来形成列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接