【问题标题】:Why does my Windows-Forms Layout change, when I am opening it from a Console-Application?当我从控制台应用程序打开它时,为什么我的 Windows 窗体布局会发生变化?
【发布时间】:2020-11-26 14:46:21
【问题描述】:

在我的项目开始时,我正在启动一个控制台。控制台执行我的代码后,会打开一个新表单。问题表单看起来很奇怪,不像我在编辑器中设计的那样。

编辑器中的表单,就像我设计的那样:

我从控制台项目打开后的表单:

控制台项目中用于打开表单的代码

Application.Run(new Form1());

还有一件事:我使用的是 .NET Core 3.1

谁有解决这个问题的办法?

提前致谢!

【问题讨论】:

  • 您是否启用了 Windows 屏幕缩放功能? (它的值是否与 100% 不同)右键单击桌面 => 显示设置 => 缩放和布局。 (我问,因为标签尺寸是拧的)
  • 您需要加载 Win32 的通用控件。比较 WinForm 项目模板与控制台项目模板中的 Main 方法。您还需要设置 COM STA 线程。

标签: c# .net visual-studio winforms .net-core


【解决方案1】:

如果您想要相同的“主题”,您应该将EnableVisualStyles 作为main 方法的第一行。如文档中所述。

也可以使用 false 调用 SetCompatibleTextRenderingDefault,因为这也是自 2005 年以来的默认设置。

以下是为 dotnet core 3.1 创建新 winforms 项目时的默认设置

Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

【讨论】:

  • 我还没有在 .NET Core 3.x 中使用过 WinForms,但你说的是 2020 年最新版本的 WinForms仍然默认为 .NET Framework 1.1 丑陋的 GDI+ 文本渲染行为?哇...
  • 这就是当您执行 File => new Project(使用 .net core 3.1)时模板所做的事情。我的猜测是他们没有为了向后兼容而改变它。或者他们不想吓到一些老派开发人员。
  • 是的,我预料到了(考虑到微软对向后兼容性的值得称道的承诺)——但我的一部分仍然希望他们会开始进行重大更改以删除这样的旧垃圾。
猜你喜欢
  • 2016-05-02
  • 2010-10-20
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多