【问题标题】:How can you add a Custom Panel in a Visio 2013 add-in?如何在 Visio 2013 加载项中添加自定义面板?
【发布时间】:2013-03-20 08:00:02
【问题描述】:

最近我编写了一个 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

编辑2:

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

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

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

这将添加窗口,就好像它是一个新的绘图...

编辑3:

Visio 对此表示我有一个无效的窗口类型会引发 COM 异常。

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

【问题讨论】:

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


    【解决方案1】:

    您可以在 Visio 中使用定位栏,而不是任务窗格 如果您下载 Visio SDK 并查看 Codes Samples Library,您会在 User Interface 下找到 Anchor Bar Usage。

    为了完整起见,您不妨查看这篇 MSDN 文章 Windows.Add Method (Visio) - http://msdn.microsoft.com/en-us/library/office/ff767674.aspx

    【讨论】:

    • 如果我使用 visAnchorBarAddon 尝试上一个代码示例中的代码,Visio 会抛出一个 COM 异常,提示窗口类型无效。它对除visStencilAddon 之外的任何东西都执行此操作。我将编辑我的帖子以显示我尝试过的内容
    • 我已经有了 Visio SDK,但显然忽略了该代码示例,感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多