-->

MS Word中自定义任务窗格将消失,当我编程方式打开文档(MS Word Custom Task

2019-09-17 10:38发布

我试图创建一个简单的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的定义,作为类的内容并不重要(在我的演示版本,我只是有一个标签,一个简单的类)。

Answer 1:

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

从MSDN ...

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



文章来源: MS Word Custom Task Pane disappears when I programatically open a document