我有一个旧版 WinForms 应用程序,我想跨会话保存窗口位置和大小。在 FormClosing 和 Load 事件期间,我一直在使用GetWindowPlacement和SetWindowPlacement 。我遇到的问题是,在较高的 DPI 设置下(例如中等,大小为 125%),大小会不断膨胀。我会以一定的大小对其调用 SetWindowPlacement,但是当调用 GetWindowPlacement 时,即使窗口一直是相同的大小,这些数字也会变大 25%。在表单中保存可调整大小元素的大小时也存在同样的问题。
现在,如果我创建一个新的 WinForms 项目,这可以正常工作:即使以更高的 DPI 运行,大小也能保持稳定。我猜在项目的内部有一些遗留设置或一些神秘的表单设置把它搞砸了,但我不知道在哪里。
我在这两个项目上都调用了 IsProcessDPIAware并且都是true
. 有谁知道这可能是什么原因造成的?