Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Surface Pro 3中开发WinForm应用程序时出现GUI预览大小问题_C#_Winforms_User Interface_Visual Studio 2013 - Fatal编程技术网

C# 在Surface Pro 3中开发WinForm应用程序时出现GUI预览大小问题

C# 在Surface Pro 3中开发WinForm应用程序时出现GUI预览大小问题,c#,winforms,user-interface,visual-studio-2013,C#,Winforms,User Interface,Visual Studio 2013,我已经开发WinForm应用程序很长时间了。我最近刚买了一台Surface Pro 3作为我的新开发PC。不幸的是,我注意到GUI编辑器有一个问题。控件的某些大小与GUI编辑器中显示的大小以及实际运行的应用程序中显示的大小不匹配。例如,我运行应用程序时,面板的大小与GUI编辑器中的大小不符。它们通常在尺寸上增加。我不确定这是否是VS问题,或者可能与使用Surface Pro 3有关 为了说明我的意思,请考虑下面的截图。注意GUI编辑器和实际应用程序中菜单栏的大小不同 如果要防止应用程序更改大小

我已经开发WinForm应用程序很长时间了。我最近刚买了一台Surface Pro 3作为我的新开发PC。不幸的是,我注意到GUI编辑器有一个问题。控件的某些大小与GUI编辑器中显示的大小以及实际运行的应用程序中显示的大小不匹配。例如,我运行应用程序时,面板的大小与GUI编辑器中的大小不符。它们通常在尺寸上增加。我不确定这是否是VS问题,或者可能与使用Surface Pro 3有关

为了说明我的意思,请考虑下面的截图。注意GUI编辑器和实际应用程序中菜单栏的大小不同


如果要防止应用程序更改大小,可以使其独立于DPI设置。你的应用程序将是像素完美的,但在高分辨率屏幕上可能太小

您只需更改主窗体的
AutoScaleMode
属性,并将其设置为
None


我知道这是一个旧线程,但我遇到了相同的问题。。。我找到了一个你可能会觉得有用的解决方法

在尝试了一些事情之后,我发现windows 10正在尝试在surface pro上对windows 10下的窗体进行“智能”调整大小(我使用的是surface pro 4)。。。我不确定这是win10、高分辨率还是surface pro问题。。。。不管它是什么,它扰乱了我的控件大小、位置、锚定和分辨率

我发现,如果我在设计器中记录了表单的预期大小,然后在表单加载事件结束时在代码中手动设置,它将覆盖此意外行为,我最终得到了我最初预期的表单大小和控件位置,我还需要在父/屏幕中重新居中表单,以获得所需的结果(当然,只有在该位置是表单的预定启动位置时)

为我工作的代码(在Form_Load事件结束时)是


我希望这能帮上忙,我有一阵子都在胡思乱想

我发布这个问题已经有一段时间了,我有点忘记了。我想我应该把我最近的发现分享给那些将发现自己处于同样困境的人

我了解到GUI编辑器和实际运行的应用程序之间的差异是因为我的Surface Pro 3具有超高的DPI比例。VisualStudio自动以216 DPI(225%显示缩放)运行,而普通计算机通常为96 DPI(100%显示缩放)。当时我的解决方法是通过反复试验来调整我的控件,并在GUI编辑器和正在运行的应用程序之间锚定大多数控件。最终,自从我开始使用普通桌面和普通屏幕进行常规软件开发以来,问题就不那么严重了。向前看,我最近偶然发现了一个关于Windows窗体中自动缩放的问题。它解释了Windows窗体的多DPI缩放问题。它还包括有关Visual Studio的DPI缩放问题的以下内容:

由于显示DPI的极端差异,特别是在现代的二合一设备中,这在最新版本的.NET Framework和Visual Studio中仍然可能发生。要在使用不同DPI显示的团队中解决此问题,请确保Visual Studio始终以非DPI感知模式启动,以便Windows窗体设计器始终以96 DPI为基础进行布局计算

他们建议的解决方案是添加或导入禁用Visual Studio高DPI感知的注册表值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000

我试过了,它确实有效。我希望这对你也有帮助。:)

这通常发生在高DPI屏幕上。检查您的DPI设置。根据我的经验,“正常100%”以外的任何东西都会导致类似的小故障。这对调整大小/停靠/锚定有什么影响?我认为这行不通。GUI编辑器和正在运行的应用程序之间的大小仍然存在明显的变化。运行它的GUI在某些情况下确实有效。检查与自动调整大小、父窗口等相关的任何代码,这些代码可能与此修复程序一致。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000