VSTO自定义outlook文件夹上下文菜单

时间:2016-11-14 11:54:47

标签: c# outlook vsto

我基本上希望这样做: C# (outlook add-in) context menu on folders

但问题是它永远不会触发FolderContextMenuDisplay事件。 看看文档似乎已被弃用,但有人知道我应该使用什么吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

通过使用Ribbon XML,您可以设置上下文菜单的可见性。

在这篇文章中,我将向您展示如何使用Ribbon XML在上下文菜单中显示和隐藏项目。 当用户右键单击Outlook文件夹时,将显示上下文菜单。

首先,将Ribbon XML项添加到Outlook项目中。

然后将以下代码添加到ThisAddIn类中。此示例假定您的功能区称为Ribbon1,并且您使用的是C#:

  protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()   
    {    
        return new Ribbon1();    
    }

接下来,使用以下内容替换Ribbon1.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
    <contextMenus>
        <contextMenu idMso="ContextMenuFolder">
            <button idMso="FolderPropertiesContext" getVisible="IsVisible" />
        </contextMenu>
    </contextMenus>
</customUI>

但是等等。还有更多! 在Ribbon1.cs文件中创建此方法。

 public bool IsVisible(Office.IRibbonControl control)
    {
string name = ((Outlook.Folder)control.Context).Name;
        if (foldername == "Inbox")
        {
            return false;
        }
        return true;
    }

当用户右键单击该文件夹时,我们会通过返回false告诉Outlook不显示该命令。否则,我们告诉Outlook继续并通过返回true使命令可见。