Мы настраиваем настраиваемое контекстное меню, когда вы щелкаете правой кнопкой мыши электронное письмо в 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 и шаблон проекта Outlook 2010 в Visual Studio. Я не нашел много хороших примеров настройки контекстного меню в целом.