我有一个传统的WinForms应用程序,我希望跨会话保存窗口的位置和大小。在FormClosing和Load事件中,我一直使用GetWindowPlacement和SetWindowPlacement。我得到的问题是,在更高的DPI设置(如中等,125%的尺寸)时,尺寸不断膨胀。我将以一定的大小调用SetWindowPlacement,但是当调用GetWindowPlacement时,即使窗口大小一直相同,这些数字也会增加25%。在表单中保存可调整大小的元素的大小时存在同样的问题。GetWindowPlacement/SetWindowPlacement无法在WinForms中工作以获得较高的DPI
现在这工作正常,如果我创建一个新的WinForms项目:即使在更高的DPI运行,大小保持稳定。我猜测这个项目还有一些遗留设置,或者一些神秘的表单设置让它变得糟糕,但我无法找到位置。
我在两个项目上都拨打了IsProcessDPIAware,两者都是true
。有谁知道可能是什么原因造成的?
+1提示AutoScaleMode。 – RandomEngy 2010-04-09 17:21:15