动态设置Word CustomTaskPane宽度

时间:2014-06-27 16:09:43

标签: c# ms-word ms-office vsto

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

myPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;

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

我不知道为什么我甚至需要在代码中设置宽度,我认为它应该选择USerControl设计器中设置的大小,但如果我没有在代码中设置大小,则宽度甚至更小。我玩过自动调整的东西,但无处可去。我觉得我错过了一些明显的东西。有人可以提出建议吗?

另外作为一个附带问题,Word 2013中的自定义控件标题高度比Word 2010大得多。我看不到任何地方可以更改它。

1 个答案:

答案 0 :(得分:1)

原因可能是因为AFAIK Office 2013 for屏幕视图的默认分辨率为16:9,而Office 2010的默认分辨率为4:3。

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

所以基本上如果你硬编码2010年任务窗格的大小,我猜你会面对你现在所面对的(我也面对它!)。

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

  1. 检查Office版本。这可以通过以下方式轻松完成:

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

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

    因此,我建议您根据Office 2013中可接受的宽度设置宽度,我希望您不需要在Office 2010中拖动任务窗格。

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

    干杯。