C# Outlook插件-上下文菜单处理

3
我们在Outlook中右键单击电子邮件时设置了自定义上下文菜单,如下所示:
        private void _application_ItemContextMenuDisplay(Office.CommandBar CommandBar, Interop.Selection Selection)
        {
                var contextButton = (Office.CommandBarButton)CommandBar.Controls.Add(Office.MsoControlType.msoControlButton, Temporary: true);
                contextButton.Visible = true;
                contextButton.Caption = "&My Context Menu";
                contextButton.Click += MyContextMenu_Click;
        }

这个方法订阅了 Application.ItemContextMenuDisplay 事件。

它的功能很好,但有时我们的事件会被触发多次。当您快速右键单击不同的电子邮件时,就会出现这种情况。

那么我想知道,在哪里清理我的临时上下文菜单项是一个好的地方?我需要在某个地方取消 C# 事件的订阅。应该在哪里进行?(我还认为我们可能需要调用 Marshal.ReleaseComObject

我们正在使用 VSTO 和 Visual Studio 中的 Outlook 2010 项目模板。总的来说,我没有找到很多关于自定义上下文菜单的好例子。

1个回答

1

我们发现该事件未按预期触发(我认为这是因为它是联系人或电子邮件列表中的菜单)。我不再处理这个问题 - 我们最终在ItemContextMenuDisplay的开头清理了旧菜单。对我们来说,这个方法很有效。 - jonathanpeppers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接