0

所以这是我的表单 onstartUp 事件代码:

        int height = Screen.PrimaryScreen.Bounds.Height;
        int width = Screen.PrimaryScreen.Bounds.Width;
        this.StartPosition = FormStartPosition.Manual;
        this.Size = new Size(width, height);
        this.WindowState = FormWindowState.Maximized;

代码工作正常,表单启动最大化。在将应用程序分发给用户之后。一位用户抱怨并发送了一个屏幕截图,其中 RHS 上的表单按钮没有出现在屏幕上!!!

我想出了问题所在,但我不知道如何解决它。问题在于开发机器上的windows字体,控制面板\外观和个性化\显示\字体大小很小,在客户上它是中等的。

如何在代码中适应这一点?

4

2 回答 2

2

问题出在windows字体上

不完全是。这不是您要更改的字体大小,而是视频适配器的每英寸点数 (DPI) 设置。传统设置是 96 dpi,从 Vista 开始,更改此设置变得容易得多。常见的其他选择是 120 dpi (125%) 和 144 dpi (150%),它们可以通过单选按钮从显示小程序直接访问。

显示器分辨率已经停滞了很长时间,已经避开摩尔定律长达 30 年。这种情况终于改变了,这在很大程度上要归功于苹果公司对“视网膜”显示器的推动。最新的 MacBook Pro 在 13 英寸屏幕上具有 2560 x 1600 像素,大约 230 dpi。

这确实带来了一个问题,例如,任何创建 1024x768 窗口的程序都会在这样的显示器上将其 UI 变成邮票。如果没有放大镜,用户界面就会变得无法使用。这样的程序需要知道视频 DPI 设置并创建一个更大的窗口,与窗口最初设计的方式相比,DPI 设置的增加成比例地更大。

这在 WPF 和 Winforms 中都是自动的。WPF 默认获取它,因为它的所有位置和大小都以英寸表示,单位为 1/96"。Winforms 仍然适用于像素,但它通过其 AutoScaleMode 属性内置了自动缩放。

这就是该用户机器上发生的情况,他的视频 DPI 设置值比您的机器大。但是,他的屏幕上也没有更多可用的像素。有视力障碍的人通常会选择,增加 DPI 设置的副作用是字体变大,因此更容易阅读。但是不可避免的问题是,您放置在窗口右侧和底部边缘附近的任何控件都会脱落,因此屏幕不够大。

您可以通过调整窗口布局来解决此类问题。或者换句话说,通过使您的 UI 设计适用于任何窗口大小。Windows 程序的一个非常常见的功能。只需在 Visual Studio 上尝试一下。拖动右下角的窗口,观察它如何处理可用空间较少但仍然可用的情况。许多 Winforms 功能可以帮助您执行此操作,例如 Control.Anchor 和 Dock 属性、FlowLayoutPanel 和 TableLayoutPanel 控件、用于棘手情况的 Resize 事件。

对此的 Q&D 修复是 Form.AutoScroll 属性。将其设置为 True 以允许 UI 仍然可用,滚动条允许用户仍然可以访问窗口外的控件。

于 2013-02-14T19:20:59.383 回答
1

您发布的代码与问题无关。您以比用户的屏幕分辨率更高的屏幕分辨率设计了表单,并且没有考虑在表单内停靠/锚定控件。

于 2013-02-14T16:44:20.800 回答