winforms - 具有新 Office 高 DPI 支持的 Outlook VSTO
问题描述
我们有一个用 C# 编写并使用 Windows 窗体的 Outlook Office VSTO 加载项。
在最近的 Office 更新之前,加载项渲染得很好。但在微软推出Office 对高清显示器的支持后,许多表单在 Outlook 2016 (MSO / Office 365) 中开始呈现空白。
我可以通过在 Outlook 底部状态栏的“显示设置”中选择“优化兼容性”在 Outlook 中解决此问题:
但这对我们的客户来说不是一个可行的解决方案,如果每个用户都必须手动执行此操作。所以我有两个问题:
- 此设置位于 Windows 注册表中的哪个位置,我需要写入什么值才能激活“优化兼容性”模式?
- 如何使我的 WinForms 插件与新的“优化以获得最佳外观”模式一起使用?
更新
我发现禁用转换以一种形式解决了问题,在这种形式中,控件在删除转换后开始出现。但是我们最重要的表单即使在移除所有转换之后仍然呈现空白。
我还尝试将项目升级到 .NET 4.7 并为 Windows 窗体启用新的高 DPI 支持。但这也没有解决问题。
解决方案
我现在可以自己回答问题 1:Outlook 2016 MSO 将设置存储在
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options
在名称“RenderForMonitorDpi”下。如果设置为 1,则该选项设置为“优化以获得最佳外观”。如果设置为 0,它将被设置为“优化兼容性”。
推荐阅读
- java - 需要正则表达式来处理具有字符后跟偶数位数的字符串
- jenkins - Jenkins声明性管道如何阻止并行阶段,直到所有子阶段都完成
- java - 是否可以使用 lombok 向静态工厂方法添加注释
- kubernetes - Gitlab Kubernetes executor runner 执行作业日志不可见
- java - 如何解决错误:当我尝试在 Java 中实例化单例类时,“MyClass.INSTANCE”不是语句?
- ajax - PhoneGap Ajax API 请求没有响应
- r - 分类/天气预报
- arrays - 如何在适用时将可以是领域列表或字符串的任何内容转换为领域列表
- c# - 将输入值与 IF 语句 C# ASP.NET Razor 中的字符串进行比较
- javascript - 函数不会运行代码的第二部分我该如何解决这个问题?