【发布时间】:2015-11-21 10:58:39
【问题描述】:
我有一个System.Window.Forms.Form 来处理每个按钮的点击。当我收到第一个事件时,我会创建一个新的 WPF System.Windows.Window 对象。
class WPF_Window : Window
{
}
public partial class Form1 : Form
{
WPF_Window wnd = null;
public Form1()
{
InitializeComponent();
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (wnd == null)
{
wnd = new WPF_Window();
}
}
}
在我的计算机上,此代码按预期工作,但如果我在另一台计算机(均为 Windows 10)上运行它,当我单击 Windows 窗体窗口时会更改其大小(减小其尺寸)。
这怎么可能?如何避免这种行为?
【问题讨论】:
-
两台电脑的 DPI 一样吗?
-
这与 DPI 有关。当您第一次使用 WPF 中的程序集时,Windows 窗体应用程序会随机调整大小。我的猜测是您需要在清单中声明应用程序不支持 DPI。
-
@AnkurTripathi 实际上这些计算具有不同的 DPI,将两者都设置为 100% 可以使应用程序正常工作。但是如何在不更改 DPI 的情况下避免这种行为?
-
@ghord 该应用程序是一个 WinForms 应用程序,我在哪里设置它不是 DPI 感知的精确度?怎么样?
-
你必须根据 DPI 设置每个宽度和高度等我写一些代码给你..
标签: c# wpf winforms resize interop