Мне нужно добавить кнопку в контекстное меню папки «Входящие». У меня это нормально работает. Что мне нужно выяснить в реализации обработчика событий, как определить, какой элемент/элементы был нажат?VSTO Outlook 2007 Контекстное меню надстройки CommandBarButton click event
private void AddIn_Startup(object sender, EventArgs e)
{
Application.ItemContextMenuDisplay += Application_ItemContextMenuDisplay;
}
private void Application_ItemContextMenuDisplay(CommandBar commandBar, Selection selection)
{
commandBar.Controls[1].BeginGroup = true; // add seperator before first menu
var cmdButtonCopy = (CommandBarButton)commandBar.Controls.Add(MsoControlType.msoControlButton, 1, Missing.Value, 1, Missing.Value);
cmdButtonCopy.Caption = "&Copy Message";
cmdButtonCopy.Click += cmdButtonCopy_Click;
}
private void cmdButtonCopy_Click(CommandBarButton ctrl, ref bool canceldefault)
{
// no sender/event args to determine which item was clicked ...
}
В обработчик событий cmdButtonCopy_Click мне нужно скопировать конкретный элемент, который был правой щелкнули, но я не могу понять, как сказать, какой пункт был щелкнул.
Это не «лучше» можно, как я надеялся, для, но он работает. Я устанавливаю свойство Tag в EntryId почтового элемента, а затем в обработчике кликов я возвращаю этот элемент из Application.Session. Благодарю. – Adam
@Adam Я пытаюсь сделать то же самое. Не могли бы вы рассказать о том, как вы это сделали? Как/где вы получили EntryId выбранного элемента почты? Как вы вообще получили доступ к почтовому элементу в обработчике кликов? Спасибо миллион заблаговременно. – kmarks2