1
這已經被問到here,但我只是不滿意給出的答案。Outlook上下文菜單項點擊發射多次
我正在向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中的上下文菜單中單擊處理器(FilingRules_Click)被解僱,很多次。所以,如果我右鍵單擊3次,處理程序執行3次,依此類推。
在上面鏈接的問題中,必須有更好的方法來達到這個目的。
我曾嘗試:
- 只是增加他們之前卸下CommandBarButtons - 但他們不存在!每當Outlook上下文菜單被隱藏時,自動刪除自定義項目。
- 將控件存儲在列表中,然後嘗試刪除處理程序 - 這會給出一個AV,因爲隱藏菜單後按鈕不再存在。
- 沒有ItemContextMenuHidden()事件讓我掛鉤否則我會嘗試。
- 當插件開始時添加項目(即只有一次沒有ItemContextMenuDisplay()處理程序),但是項目從不出現,因爲它們總是在顯示菜單時被清除。
有沒有人有另一個建議?
有趣,我會嘗試這是我的結束。謝謝 – Simon 2012-03-30 06:35:35