这已经被问到here,但我只是对所给出的答案不满意。
我目前正在向Outlook添加自定义上下文菜单。守则如下:
void Application_ItemContextMenuDisplay(Microsoft.Office.Core.CommandBar CommandBar, Microsoft.Office.Interop.Outlook.Selection Selection)
{
if (Online)
{
foreach (string category in FilingRuleManager.FilingRuleCategories)
{
Office.CommandBarPopup cb = CommandBar.Controls.Add(Office.MsoControlType.msoControlPopup, missing, missing, missing, true) as Office.CommandBarPopup;
cb.BeginGroup = true;
cb.Visible = true;
cb.Tag = MENUNAME;
cb.Caption = category;
//now add the filing rules as a sub menu
foreach (FilingRuleDB rule in FilingRuleManager.FilingRules.Values)
{
if (rule.RuleCategory == category)
{
Office.CommandBarButton cbSub = cb.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true) as Office.CommandBarButton;
_FilingRules.Add(cbSub);
cbSub.Visible = true;
cbSub.Caption = rule.RuleName;
cbSub.Tag = rule.FilingRuleID.ToString();
cbSub.Click += new Office._CommandBarButtonEvents_ClickEventHandler(FilingRules_Click);
}
}
}
}
}在运行应用程序时,每次在Outlook中显示上下文菜单时,Click处理程序(FilingRules_Click)都会被多次触发。因此,如果我右键单击3次,则处理程序将执行3次,依此类推。
必须有更好的方法来解决这个问题,而不是上面提到的问题中的黑客。
我试过:
有谁有别的建议吗?
发布于 2012-03-30 04:00:59
解决了问题。
variable
Outlook.Application事件ContextMenuClose。新ApplicationEvents_11_ContextMenuCloseEventHandler(outlookInstance_ContextMenuClose);
outlookInstance_ContextMenuClose(OlContextMenu ContextMenu) { if (ContextMenu == OlContextMenu.olItemContextMenu) { ContextIndexButton.Click -=新_CommandBarButtonEvents_ClickEventHandler();ContextIndexButton = null;}
https://stackoverflow.com/questions/9272747
复制相似问题