加载WPF后,Windows表单调整大小

5
我遇到了一种奇怪的行为,目前我还没有解释或解决方案,希望有人能知道更多信息。
所以我有一个简单的Windows Forms应用程序,只有一个按钮,点击该按钮将加载一个PresentationFramework程序集:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Assembly.Load("PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
    }
}

现在,当我在Windows 10上设置了自定义缩放大小(例如200%)时,单击按钮后,窗体将被重新调整大小,如下图所示。

- 单击前:

Form1 before button click

- 点击后:

Form1 after button click

然而,当我不使用自定义缩放时,这种行为并不会发生(指编程相关内容)。

Scaling options

我最初认为问题与Form.AutoScaleMode有关,但似乎并不是这样。此外,我无法观察到Form对象中的任何更改值。


这个问题在这里也得到了回答:https://dev59.com/tFwY5IYBdhLWcg3wwqH1。 - Crown
1个回答

5

我不确定我完全理解你的问题,但你可以尝试在AssemblyInfo.cs文件中添加以下属性(在Visual Studio的Solution Explorer下的Properties节点中找到):

[assembly: System.Windows.Media.DisableDpiAwareness]

这将允许应用程序禁用使用每英寸点数(dpi)感知技术来控制所有用户界面元素。


那样做起作用了,非常感谢!不幸的是,我仍然不明白为什么问题首先出现,为什么在加载PresentationFramework之后发生变化? - Kipper
我的猜测是,当WPF的DpiAwareness与WinForms在同一个应用程序中使用时,会导致WinForms出现问题。 - notacat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接