VSTO Outlook 2007 Надстройка Контекстное меню Событие щелчка CommandBarButton - PullRequest
1 голос
/ 15 сентября 2010

Мне нужно добавить кнопку в контекстное меню папки «Входящие». У меня это работает нормально. Что мне нужно выяснить, так это реализовать обработчик событий, как определить, какой элемент / элементы были нажаты?


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 мне нужно скопировать конкретный элемент, по которому щелкнули правой кнопкой мыши, но я не могу понять, как определить, по какому элементу был нажат

Ответы [ 2 ]

1 голос
/ 03 июля 2012

Я написал код для решения вашей проблемы, посмотрите на него:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Application.ItemContextMenuDisplay += new ApplicationEvents_11_ItemContextMenuDisplayEventHandler(Application_ItemContextMenuDisplay);
    }

    void Application_ItemContextMenuDisplay(CommandBar CommandBar, Selection Selection)
    {
        CommandBarButton mycmdbarbtn = (CommandBarButton)CommandBar.Controls.Add(MsoControlType.msoControlButton,missing, missing, 1,true);
        mycmdbarbtn.Caption = "Test Button";           
        mycmdbarbtn.Click += new _CommandBarButtonEvents_ClickEventHandler(mycmdbarbtn_Click);           
        mailitm=Selection.Application.ActiveExplorer().Selection[1]; // to get the currently selected mailitem.
    }

    void mycmdbarbtn_Click(CommandBarButton Ctrl, ref bool CancelDefault)
    {
        MessageBox.Show("The subject of the clicked mail is " + mailitm.Subject);
    }
1 голос
/ 25 сентября 2010

Вы можете использовать свойство tag внутри CommandBarButton

...