【问题标题】:MS Word Custom Task Pane disappears when I programatically open a document当我以编程方式打开文档时,MS Word 自定义任务窗格消失
【发布时间】:2012-05-23 05:32:42
【问题描述】:

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

【问题讨论】:

    标签: .net ms-word vsto add-in customtaskpane


    【解决方案1】:

    在 MS Word 中,自定义任务窗格是每个文档的窗口 (see MSDN Reference)。如果您打开一个新文档,则任务窗格集合是不同的。如果您想保持持久性任务窗格处于打开状态 - 您必须通过监控文档打开/关闭事件来自行管理它,如下所述。

    来自MSDN...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多