如何在Visio 2013加载项中添加自定义面板?

时间:2013-03-20 08:00:03

标签: c# ms-office visio office-addins

最近我写了一个outlook加载项,它有一个ribbon.xml文件,用于额外的功能区,上下文菜单等。我还添加了一个额外的面板,停靠在我的窗口右侧。

现在我开始研究如何为Visio创建加载项。 ribbon.xml实际上是相同的,所以这根本不是问题。但是,在打开Visio文档时,我似乎无法找到任何方法来添加自定义面板。

到目前为止,我在Visio中已知道是否打开/创建/更改了文档:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    MessageBox.Show("Visio Add-In V1");
    Globals.ThisAddIn.Application.DocumentChanged += new Visio.EApplication_DocumentChangedEventHandler(docChanged);
    Globals.ThisAddIn.Application.DocumentOpened += new Visio.EApplication_DocumentOpenedEventHandler(docChanged);
    Globals.ThisAddIn.Application.DocumentCreated += new Visio.EApplication_DocumentCreatedEventHandler(docChanged);
}

private void docChanged(Visio.Document doc)
{
    MessageBox.Show("Document loaded");
}

在outlook中我会这样做来添加一个自定义面板(简化):

MyPanel ctrl = new MyPanel();
Microsoft.Office.Tools.CustomTaskPane ctp = Globals.ThisAddIn.CustomTaskPanes.Add(ctrl, title);
ctp.Visible = true;
ctp.Width = 300;
ctp.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight;

现在,我如何才能在Visio 2013加载项中执行此操作?

修改

不幸的是,这让我觉得不可能: http://msdn.microsoft.com/en-us/library/vstudio/bf08984t.aspx

EDIT2:

以下答案应该有效:Are Task Panes Available in Visio VSTO?

但是我似乎找不到在主窗口上获得停靠面板的方法。这是我试过的:

Globals.ThisAddIn.Application.Windows.Add("testpanel", VisWindowStates.visWSDockedLeft, VisWinTypes.visStencilAddon, null, null, null, 300);

这会将窗口添加为新图形...

EDIT3:

Visio抛出一个COM异常,说我的窗口类型无效。

Application.Windows.Add("testpanel", VisWindowStates.visWSDockedRight, VisWinTypes.visAnchorBarAddon, null, null, 300);

1 个答案:

答案 0 :(得分:2)

您可以在Visio中使用Anchor Bars,而不是在任务窗格中使用 如果您下载Visio SDK并查看代码示例库,您将在用户界面下找到Anchor Bar Usage。

为了完整起见,您可能希望查看此MSDN文章Windows.Add方法(Visio) - http://msdn.microsoft.com/en-us/library/office/ff767674.aspx