在 Surface Pro 3 中开发 WinForm 应用程序时 GUI 预览大小问题
GUI Preview Sizes Issue When Developing WinForm App in Surface Pro 3
我已经开发 WinForm 应用程序很长时间了。我最近刚买了一台 Surface Pro 3 作为我的新开发 PC。不幸的是,我注意到 GUI 编辑器存在问题。控件的某些大小与 GUI 编辑器中显示的以及实际 运行ning 应用程序中显示的不匹配。例如,当我 运行 应用程序时,我的面板大小不符合它在 GUI 编辑器中的外观。它们的尺寸通常会增加。我不太确定这是 VS 问题还是与使用 Surface Pro 3 有特殊关系?
为了证明我的意思,请考虑以下屏幕截图。请注意 GUI 编辑器中和实际应用程序中菜单栏大小的差异。
如果你想阻止你的应用改变大小,你可以让它独立于 DPI 设置。您的应用程序像素完美,但在高分辨率屏幕上可能太小。
你只需要将主窗体的AutoScaleMode
属性改成None
.
即可
我知道这是一个旧线程,但我遇到了同样的问题...我找到了一个您可能会觉得有用的解决方法...
在尝试了一些事情后,我发现 windows 10 正在尝试 "intelligent" 在 Surface pro 上 Windows 10 下调整表单大小(我使用的是 Surface pro 4)...我不确定它是 win10、高分辨率还是 surface pro 问题....不管是什么,它都弄乱了我的控件大小、位置、锚点和分辨率。
我发现,如果我在设计器中记下我的表单的预期大小,然后在我的 Form_Load 事件结束时在代码中手动设置它,它会覆盖这个意外的行为,我最终得到了我最初预期的表单大小和控件位置,我还需要将表单重新置于 parent/screen 中以获得所需的结果(当然只有当这是您的表单的预期启动位置时)
对我有用的代码(在 Form_Load 事件结束时)是...
this.height = 800;
this.width = 600;
this.CenterToScreen();
我希望这对某人有所帮助,我有一段时间一直在努力!
我发布这个问题已经有一段时间了,我有点忘记了。我想我应该为那些发现自己处于同样困境的人分享我最近的发现。
我了解到 GUI 编辑器和实际 运行 应用程序之间的差异是因为我的 Surface Pro 3 的超高 DPI 缩放。Visual Studio 自动 运行 在216 DPI(225% 显示缩放)与普通计算机通常的 96 DPI(100% 显示缩放)相比。我当时的解决方法是通过反复试验简单地相应地调整我的控件,并将其中的大部分锚定在 GUI 编辑器和 运行 应用程序之间。最终,自从我转移到带有普通屏幕的普通桌面以进行常规软件开发后,这就不再是个问题了。展望未来,我最近偶然发现了 Microsoft documentation 关于 Windows 表单中的自动缩放。它解释了 Windows 表单的多个 DPI 缩放问题。它还包括有关 Visual Studio:
的 DPI 缩放问题的这一点
With the extreme differences in display DPIs, especially in modern 2-in-1 devices, this can still happen with the most current versions of the .NET Framework and Visual Studio. To address this in a team using different DPI displays, make sure Visual Studio always starts in a non-DPI-aware mode, so the Windows Forms designer always bases the layout calculation on 96 DPI.
他们建议的解决方案是添加或导入禁用 Visual Studio 的高 DPI 感知的注册表值:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000
我试过了,确实有效。我希望它也能帮助你。 :)
我已经开发 WinForm 应用程序很长时间了。我最近刚买了一台 Surface Pro 3 作为我的新开发 PC。不幸的是,我注意到 GUI 编辑器存在问题。控件的某些大小与 GUI 编辑器中显示的以及实际 运行ning 应用程序中显示的不匹配。例如,当我 运行 应用程序时,我的面板大小不符合它在 GUI 编辑器中的外观。它们的尺寸通常会增加。我不太确定这是 VS 问题还是与使用 Surface Pro 3 有特殊关系?
为了证明我的意思,请考虑以下屏幕截图。请注意 GUI 编辑器中和实际应用程序中菜单栏大小的差异。
如果你想阻止你的应用改变大小,你可以让它独立于 DPI 设置。您的应用程序像素完美,但在高分辨率屏幕上可能太小。
你只需要将主窗体的AutoScaleMode
属性改成None
.
我知道这是一个旧线程,但我遇到了同样的问题...我找到了一个您可能会觉得有用的解决方法...
在尝试了一些事情后,我发现 windows 10 正在尝试 "intelligent" 在 Surface pro 上 Windows 10 下调整表单大小(我使用的是 Surface pro 4)...我不确定它是 win10、高分辨率还是 surface pro 问题....不管是什么,它都弄乱了我的控件大小、位置、锚点和分辨率。
我发现,如果我在设计器中记下我的表单的预期大小,然后在我的 Form_Load 事件结束时在代码中手动设置它,它会覆盖这个意外的行为,我最终得到了我最初预期的表单大小和控件位置,我还需要将表单重新置于 parent/screen 中以获得所需的结果(当然只有当这是您的表单的预期启动位置时)
对我有用的代码(在 Form_Load 事件结束时)是...
this.height = 800;
this.width = 600;
this.CenterToScreen();
我希望这对某人有所帮助,我有一段时间一直在努力!
我发布这个问题已经有一段时间了,我有点忘记了。我想我应该为那些发现自己处于同样困境的人分享我最近的发现。
我了解到 GUI 编辑器和实际 运行 应用程序之间的差异是因为我的 Surface Pro 3 的超高 DPI 缩放。Visual Studio 自动 运行 在216 DPI(225% 显示缩放)与普通计算机通常的 96 DPI(100% 显示缩放)相比。我当时的解决方法是通过反复试验简单地相应地调整我的控件,并将其中的大部分锚定在 GUI 编辑器和 运行 应用程序之间。最终,自从我转移到带有普通屏幕的普通桌面以进行常规软件开发后,这就不再是个问题了。展望未来,我最近偶然发现了 Microsoft documentation 关于 Windows 表单中的自动缩放。它解释了 Windows 表单的多个 DPI 缩放问题。它还包括有关 Visual Studio:
的 DPI 缩放问题的这一点With the extreme differences in display DPIs, especially in modern 2-in-1 devices, this can still happen with the most current versions of the .NET Framework and Visual Studio. To address this in a team using different DPI displays, make sure Visual Studio always starts in a non-DPI-aware mode, so the Windows Forms designer always bases the layout calculation on 96 DPI.
他们建议的解决方案是添加或导入禁用 Visual Studio 的高 DPI 感知的注册表值:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000
我试过了,确实有效。我希望它也能帮助你。 :)