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

本文关键字:自定义 添加 加载项 Visio 2013 | 更新日期: 2023-09-27 18:04:54

最近我写了一个outlook插件,它有一个ribbon.xml文件,用于额外的ribbon,上下文菜单等。我还在窗户的右侧增加了一个额外的面板。

现在我已经开始研究如何为Visio创建插件。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:

下面的答案应该工作:任务窗格在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);

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

您可以在Visio中使用锚条,而不是任务窗格如果你下载Visio SDK并查看代码样本库,你会在用户界面下找到锚条用法。

为了完整起见,您可能希望回顾一下MSDN文章Windows。添加方法(Visio) - http://msdn.microsoft.com/en-us/library/office/ff767674.aspx