解决:缩放比例不是100%时,ContextMenu在WinForms中不能与WPF一起使用

解决:缩放比例不是100%时,ContextMenu在WinForms中不能与WPF一起使用

以下情况发生时,便会发生该错误:

  • 启动项目是WinForms应用程序
  • WinForms应用程序包含WPF用户控件

    private void Form1_Load_1(object sender,EventArgs e) { ctrlHost = new ElementHost(); ctrlHost.Dock = DockStyle.Fill; ctrlHost.AutoSize = true; panel1.Controls.Add(ctrlHost); wpfAddressCtrl = new Test.UserControl1(); ctrlHost.Child = wpfAddressCtrl; }

  • WPF用户控件使用带有ContextMenu(例如按钮)的控件

  • 监视器上的窗口缩放比例大于100%(例如125%)
  • WinForms应用程序中的app.manifest具有此配置 <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiaware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiaware> <dpiawareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiawareness> <gdiScaling xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">true</gdiScaling> </windowsSettings> </application>

我发现的唯一解决方案是从app.manifest中完全删除3个配置(dpiaware,dpiawareness和gdiScaling),但我想知道是否还有其他方法可以解决此问题?

这是我的示例项目中的错误: https://gofile.io/?c=MwtPjb

编辑: 我找到了一个非常简单的解决方案,对我有用,不需要更改庞大的应用程序

我删除了gdiScaling并将其他两个更改为:

<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiaware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiaware> <dpiawareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">unaware</dpiawareness> </windowsSettings> </application>

liu2050031 回答:解决:缩放比例不是100%时,ContextMenu在WinForms中不能与WPF一起使用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2928320.html

大家都在问