5

我正在尝试创建一个简单的 MS Word 插件(主要是为了探索功能)。该插件在功能区中添加了自定义任务窗格和组。功能区控件包括一个用于控制自定义任务窗格可见性的复选框,以及一个用于打开文档的按钮。当我在 MS Word 中测试插件时,任务窗格正确显示,并且复选框正常工作。问题是,只要我单击按钮并打开一个新文档,任务窗格就会隐藏,并且复选框不再控制任务窗格的可见性。出了什么问题?如何保持自定义任务窗格显示?

这是插件的简单版本:

public partial class ThisAddIn
{
    private MyUserControl _myUserControl;
    private CustomTaskPane _myCustomTastPane;
    private OpenFileDialog _dialog;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        _dialog = new OpenFileDialog { Filter = "Doc File (*.rtf)|*.rtf", RestoreDirectory = true };
        _myUserControl = new MyUserControl();
        _myCustomTastPane = this.CustomTaskPanes.Add(_myUserControl, "My Task Pane");
        _myCustomTastPane.Visible = true;

        Globals.Ribbons.MyRibbon.ShowPane.Click += ShowClicked;
        Globals.Ribbons.MyRibbon.LoadDoc.Click += LoadFile;
    }

    private void ShowClicked(object sender, RibbonControlEventArgs ribbonControlEventArgs)
    {
        _myCustomTastPane.Visible = Globals.Ribbons.MyRibbon.ShowPane.Checked;
    }

    void LoadFile(object sender, RibbonControlEventArgs e)
    {
        if (_dialog.ShowDialog() != DialogResult.OK) return;

        object missing = Missing.Value;
        object myFalse = false;
        object myTrue = true;
        object format = WdSaveFormat.wdFormatRTF;
        object fileToOpen = _dialog.FileName;

        Application.Documents.Open(ref fileToOpen, ref myFalse, ref myFalse, ref myFalse, ref missing, ref missing, ref missing, ref missing,
                                                                ref missing, ref missing, ref missing, ref myTrue, ref myFalse, ref missing, ref missing, ref missing);
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

    #region VSTO generated code
    //....
    #endregion
}

为了简单起见,我省略了功能区的定义,因为它实际上只是一个按钮和一个复选框。我也省略了 MyUserControl 的定义,因为类的内容并不重要(在我的演示版本中,我只有一个带有标签的简单类)。

4

1 回答 1

6

在 MS Word 中,自定义任务窗格是每个文档的窗口(请参阅 MSDN 参考)。如果您打开一个新文档,则任务窗格集合是不同的。如果您想保持一个持久的任务窗格打开 - 您必须通过监视文档打开/关闭事件来自己管理它,如下所述。

MSDN ...

当您为 Word 2007 或 InfoPath 2007 创建自定义任务窗格时,自定义任务窗格仅对单个文档可见。这些应用程序中的任务窗格与托管文档的窗口相关联,但每个文档都有该窗口的不同实例。
...
如果要为多个文档显示自定义任务窗格,您可以在用户创建新文档或打开现有文档时创建自定义任务窗格的新实例。例如,您可以为 Word 2007 加载项中的NewDocumentDocumentOpen事件创建处理程序,以创建自定义任务窗格的新实例,该实例在新文档或打开的文档中可见。

于 2012-05-23T20:22:37.267 回答