C# VSTO-word任务窗格在具有值问题的多个文档中共享

C# VSTO-word任务窗格在具有值问题的多个文档中共享,c#,vsto,office-interop,C#,Vsto,Office Interop,我正在使用VSTO和c创建一个加载项 我已经为任务窗格创建了一个用户控件,其中有以下控件: 1文本框-用于word文档文件夹, 2按钮-用于浏览文本框中的指定文件夹, 3树状视图控件,用于在文本框中显示指定路径上的所有文件和文件夹 这些很好用。当我从树状视图中选择一个文档时,它将在没有任务窗格的情况下打开 我已经为DocumentSelect编写了以下代码 private void treeFiles_NodeMouseDoubleClick(object sender, TreeNodeMou

我正在使用VSTO和c创建一个加载项

我已经为任务窗格创建了一个用户控件,其中有以下控件: 1文本框-用于word文档文件夹, 2按钮-用于浏览文本框中的指定文件夹, 3树状视图控件,用于在文本框中显示指定路径上的所有文件和文件夹

这些很好用。当我从树状视图中选择一个文档时,它将在没有任务窗格的情况下打开

我已经为DocumentSelect编写了以下代码

private void treeFiles_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        string fullPath = e.Node.Name;
        string checkExt = Path.GetExtension(fullPath);
        if (checkExt.Contains("doc"))
        {
            //System.Diagnostics.Process.Start(fullPath);
            object fileName = fullPath;
            object readOnly = false;
            object isVisible = true;
            // Here is the way to handle parameters you don't care about in .NET
            object missing = System.Reflection.Missing.Value;

            // Make word visible, so you can see what's happening         
            Globals.MainPage.Application.Visible = true;

            Word.Document aDoc = Globals.MainPage.Application.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible);

            // Activate the document so it shows up in front
            aDoc.Activate();
        }
    }
在主文件中,我编写了以下代码:

    HomeControl objHomeControl;

    public static Microsoft.Office.Tools.CustomTaskPane taskPaneValue;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        objHomeControl = new HomeControl();
        taskPaneValue = this.CustomTaskPanes.Add(objHomeControl, "File task pane");
        taskPaneValue.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionLeft;
        taskPaneValue.VisibleChanged += new EventHandler(taskPaneValue_VisibleChanged);
        taskPaneValue.Visible = true;
        this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);

    }

    void Application_DocumentOpen(Word.Document Doc)
    {
        HomeControl objHomeControl1 = new HomeControl();
        taskPaneValue = this.CustomTaskPanes.Add(objHomeControl1, "File task pane",Doc.ActiveWindow);
        taskPaneValue.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionLeft;
        taskPaneValue.VisibleChanged += new EventHandler(taskPaneValue_VisibleChanged);
        taskPaneValue.Visible = true;
    }

    void taskPaneValue_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons.MyRibbon.tgleButton.Checked = taskPaneValue.Visible;

    }

    public Microsoft.Office.Tools.CustomTaskPane TaskPane
    {
        get
        {
            return taskPaneValue;
        }
    }
当我双击该节点时,文档将打开,但它将重新初始化。所有值都被重置,功能区中的加载项打开/关闭不起作用。如何在所有文档中创建UserControl共享的单个副本

我也试过这个

    void Application_DocumentOpen(Word.Document Doc)
    {
        taskPaneValue = this.CustomTaskPanes.Add(objHomeControl, "File task pane",Doc.ActiveWindow);
        taskPaneValue.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionLeft;
        taskPaneValue.VisibleChanged += new EventHandler(taskPaneValue_VisibleChanged);
        taskPaneValue.Visible = true;
    }
它将在新文档中打开任务窗格。但不允许我点击任何地方。如果单击父文档,我会收到以下异常消息:

无法使用已与其基础RCW分离的COM对象


帮帮我。

我已经解决了。[[谢谢microsoft团队。[1]:[2]:您应该将您如何解决此问题作为答案发布,并将其标记为已接受。特别是因为您列出的前两个链接已经失效。我已解决此问题。[[谢谢microsoft团队。[1]:[2]:你应该将你如何解决它作为一个答案,并将其标记为接受。特别是因为你列出的前两个链接已经失效。