我们在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 项目模板。总的来说,我没有找到很多关于自定义上下文菜单的好例子。
ItemContextMenuDisplay
的开头清理了旧菜单。对我们来说,这个方法很有效。 - jonathanpeppers