c# - VSTO 自定义 Outlook 文件夹上下文菜单

标签 c# outlook vsto

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

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

谢谢!

最佳答案

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

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

首先,将功能区 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 使命令可见。

关于c# - VSTO 自定义 Outlook 文件夹上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40588175/

相关文章:

c# - VSTO/COM 的单例实现

c# - CopyFromScreen 是获取屏幕截图的正确方法吗?

c# - 将 IEnumerable<T> 转换为字符串 []

c# - 如何在.xaml中制作一个简单的ContentDialog?

outlook - 在 Outlook 的 HTML 电子邮件中使用标题属性

html - EWS Managed API、Appointment MessageBody 以及 HTML/CSS 的销毁

c# - 释放 WPF 图像控件的缓存

html - 我可以检测 outlook 客户端并更改我的 html 电子邮件的样式吗?

c# - VSTO 2007 : how do I determine the page and paragraph number of a Range?

email - 从不在 session 帐户中的非默认帐户发送邮件