C#Outlook加载项-上下文菜单处理
当您在Outlook中右键单击电子邮件时,我们会设置一个自定义上下文菜单,如下所示:C#Outlook加载项-上下文菜单处理,c#,.net,vsto,outlook-addin,C#,.net,Vsto,Outlook Addin,当您在Outlook中右键单击电子邮件时,我们会设置一个自定义上下文菜单,如下所示: private void _application_ItemContextMenuDisplay(Office.CommandBar CommandBar, Interop.Selection Selection) { var contextButton = (Office.CommandBarButton)CommandBar.Controls.
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;
}
此方法已订阅到应用程序。ItemContextMenuDisplay
它工作正常,只是偶尔我们的事件会被多次触发。当你右键快速点击不同的电子邮件时,就会发生这种情况
然后我想知道,什么时候是清理临时上下文菜单项的好地方?我需要退订某个地方的C#活动。打算在哪里做这件事?(我还认为我们可能需要调用Marshal.ReleaseComObject
)
我们正在Visual Studio中使用VSTO和Outlook 2010项目模板。一般来说,我还没有找到很多定制上下文菜单的好例子。这可能就是为什么在Outlook 2010中,Microsoft更倾向于使用Outlook 2007样式的命令栏。看 至于清理
命令栏使用的资源,您需要附加到事件以释放资源并取消订阅侦听器。看
您应该重构代码,以利用较新的Ribbon XML界面来避免命令栏
我们发现此事件没有按预期触发(我认为是因为它是列表中联系人或电子邮件上的菜单)。我不再处理这个问题了——我们最终清理了ItemContextMenuDisplay
开头的旧菜单。这对我们很有效。