2010-09-15 136 views
1

我需要添加一個按鈕到收件箱的上下文菜單。我有這個工作正常。我需要弄清楚的是在事件處理程序的實現中,我如何確定哪個項目/項目被點擊?VSTO Outlook 2007加載項上下文菜單CommandBarButton單擊事件

 

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事件處理程序,我需要複製是右鍵單擊的具體項目,但我無法弄清楚如何告訴單擊了哪個項目。

回答

1

可以使用CommandBarButton的

+1

這不是「最佳」可能的方式我希望爲,但它的作品。我將Tag屬性設置爲郵件項的EntryId,然後在Click處理程序中,我將該項從Application.Session中取回。謝謝。 – Adam 2010-09-27 19:49:52

+0

@亞當我試圖做同樣的事情。你能否詳細說明你是如何做到這一點的?您如何/在哪裏獲得所選郵件項目的EntryId?您是如何在點擊處理程序中訪問郵件的?多謝提前一百萬。 – kmarks2 2012-03-16 19:26:20

1

內標籤屬性我寫的代碼來解決您的問題,看看吧:

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); 
    } 
+0

您在這裏丟失的唯一東西是您設置的'mailitm'的全局變量。 – 2014-11-25 20:41:59

相關問題