2011-04-11 16 views
6

मेरे वीएसटीओ आउटलुक एडिन में मैं एक बटन डालने की कोशिश कर रहा हूं जो एक फ़ोल्डर पर राइट क्लिक करते समय दिखाई देगा। मेरी स्टार्टअप समारोह में मैं इस है:सी # (आउटलुक ऐड-इन) संदर्भ मेनू

Outlook.Application myApp = new Outlook.ApplicationClass(); 
myApp.FolderContextMenuDisplay += new ApplicationEvents_11_FolderContextMenuDisplayEventHandler(myApp_FolderContextMenuDisplay); 

तो मैं उस के लिए हैंडलर है ...

void myApp_FolderContextMenuDisplay(CommandBar commandBar, MAPIFolder Folder) 
{ 
    var contextButton = commandBar.Controls.Add(MsoControlType.msoControlButton, missing, missing, missing, true) as CommandBarButton; 
    contextButton.Visible = true; 
    contextButton.Caption = "some caption..."; 
    contextButton.Click += new _CommandBarButtonEvents_ClickEventHandler(contextButton_Click); 
} 

और अंत में क्लिक के लिए हैंडलर ....

void contextButton_Click(CommandBarButton Ctrl, ref bool CancelDefault) 
{ 
    //stuff here 
} 

मेरे प्रश्न यह है कि मैं MAPIFolder FoldermyApp_FolderContextMenuDisplay से contextButton_Click पर कैसे भेजूं?

(यह एक और तरीका है किया जा सकता है, तो मैं भी सुझाव के लिए खुला रहा हूँ)

उत्तर

3

सबसे आसान तरीका सिर्फ उदाहरण के लिए, एक बंद उपयोग करने के लिए है:

// where Folder is a local variable in scope, such as code in post 
contextButton.Click += (CommandBarButton ctrl, ref bool cancel) => { 
    DoReallStuff(ctrl, Folder, ref cancel); 
}; 

साफ करने के लिए सुनिश्चित करें घटना, यदि आवश्यक हो। एक बात यह देखने के लिए है कि फ़ोल्डर के लिए आरसीडब्लू में अब "विस्तारित जीवनकाल" हो सकता है क्योंकि बंद होने से पहले इसे ज़िंदा रह सकता है (लेकिन ओओएम के साथ बहुत महत्वपूर्ण मैन्युअल रूप से आरसीडब्ल्यू को मैन्युअल रूप से रिलीज़ करने के लिए जारी नहीं किया जाता है ।)

हैप्पी कोडिंग।

संबंधित मुद्दे