c# - 动态设置Word CustomTaskPane宽度

标签 c# ms-word ms-office vsto

我有一个 VSTO 自定义任务 Pane 。在我的代码中,我将宽度设置为 306,并且在 Word 2010 中一切都正确显示。但是,在 Word 2013 中, Pane 的某些右侧不可见,除非我手动拖动以使其更宽。请注意,这是同一台电脑,因此分辨率不应成为一个因素。我觉得如果我只是增加代码中的宽度,我并没有真正解决真正的问题,所以想要一种动态设置宽度的方法。请注意,控件停靠在右侧

myPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;

所以看不出它的一部分应该悬卡在屏幕一侧。此外,即使我将其停靠在左侧,它仍然缺少 Pane 的右侧。

我不确定为什么我需要在代码中设置宽度,我认为它应该采用 USerControl 设计器中设置的尺寸,但如果我不在代码中设置尺寸,宽度会更小。我已经尝试过自动调整大小的东西,但一无所获。我觉得我错过了一些明显的东西。请问有人可以指教吗?

另外一个问题是,Word 2013 中的自定义控件标题高度比 Word 2010 大得多。我看不出有什么地方可以更改此设置。

最佳答案

原因可能是因为据我所知,Office 2013 屏幕 View 的默认分辨率是 16:9,而 Office 2010 的默认分辨率是 4:3。

我遇到过类似的情况(尽管是针对 PowerPoint),默认分辨率会根据 Office 2010 还是 2013 的不同而变化。

所以基本上,如果您对 2010 年任务 Pane 的大小进行硬编码,我想您将面临现在所面临的情况(我也遇到过!)。

您可能会考虑动态设置宽度,但为此您需要做两件事

  1. 检查 Office 版本。这可以轻松完成,如下所示:

    Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
    
  2. 在 TaskPane.Designer.cs 类的 InitializeComponent() 方法中动态更改宽度。

但问题是您无法在 InitializeComponent() 方法中添加自定义代码,否则即使卸载加载项后该对象也不会被正确处理。 任务管理器中将出现一个额外的 Word Process 实例。

因此,我建议您按照 Office 2013 中可接受的宽度设置宽度,并且希望您不需要在 Office 2010 中拖动任务 Pane 。

就你的第二个问题而言,我认为这是默认行为。

干杯。

关于c# - 动态设置Word CustomTaskPane宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456318/

相关文章:

xml - XLSX 对变更的取证分析

c# - 使用 LINQ2SQL DataContext 表作为其 ItemsSource 时使用 DataGrid 的正确方法(最佳实践)

c# - 在 .net 4 上使用异步等待

vba - Word 2011 VBA 中的文件对话框

windows - 解压 "wmz"文件

excel - 从 Word 文档中删除前导 "bullet"

c# - 如何正确解析从 GSM 模块收到的响应数据?

c# - C# 中的私有(private)静态变量和线程安全

ms-access - 无法在 MS Access 中的 "Form"对象上使用 "SubForm"属性?

vba - Excel 2010 VBA 创建日期