2011-12-19 12 views
5

पर किसी सार्वजनिक फ़ोल्डर पर ईवेंट जोड़ें मुझे किसी ईवेंट फ़ोल्डर को ItemAdd सार्वजनिक फ़ोल्डर की घटना से जोड़ने में कोई समस्या है।आइटम एक्सचेंज

समस्या यह है कि ईवेंट हैंडलर कुछ सफल कॉल के बाद बुलाया जाता है।

कोड छोटा है। मेरे पास ThisAddIn कक्षा है जो एक ऑब्जेक्ट बनाता है जो बदले में ItemAdd ईवेंट को इसके कन्स्ट्रक्टर में जोड़ती है। फ़ंक्शन बस एक संदेशबॉक्स पॉप अप करता है।

कृपया मुझे सही दिशा में इंगित करें। मैं समझ में नहीं आता कि त्रुटि कहां देखना है।

अग्रिम धन्यवाद, अनातोली

यहाँ परीक्षण कोड मैं चलाने का प्रयास है:

public partial class ThisAddIn 
{ 
    internal static Outlook.Folder posts_folder = null; 
    private static test t; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 

     t = new test(); 
    } 
{ 

class test 
{ 
    public test() 
    { 
     System.Windows.Forms.MessageBox.Show("Attaching..."); 
     ThisAddIn.posts_folder.Items.ItemAdd +=new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); 
    } 
    void Items_ItemAdd(object Item) 
    { 
     System.Windows.Forms.MessageBox.Show((Item as Outlook.PostItem).Subject); 
    } 
} 
+0

क्या आप अपना कोड स्निपेट पोस्ट कर सकते हैं .. आप इवेंट हैंडलर को कैसे घोषित कर रहे हैं .. क्या आप इवेंट हैंडलरवार + = नया कुछ भी हैंडलर या + - कुछ एवेन्ट हैंडलर का उपयोग कर रहे हैं, आप एक प्रतिनिधि, कॉलकबैक का उपयोग कर रहे हैं। – MethodMan

उत्तर

3

सतत Googling अपने काम किया है। मैंने पाया कि इस मुद्दे को कैसे हल किया जाए। ऐसा प्रतीत होता है कि मैं अकेला नहीं हूं जो इसका अनुभव करता है। अब

internal static class stor 
{ 
    public static Outlook.Items i; 
} 

public partial class ThisAddIn 
{ 
    internal static Outlook.Folder posts_folder = null; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     // the code for finding a posts_folder is omitted 

     stor.i = posts_folder.Items; 
     stor.i.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Posts_Add); 
    } 

    static void Posts_Add(object Item) 
    { 
     System.Windows.Forms.MessageBox.Show("New item"); 
    } 
{ 

की उम्मीद के रूप में यह काम करता है:

मैं मैं वैश्विक विस्तार करने के लिए ट्रैक करना चाहते हैं फ़ोल्डर के आइटम संग्रह के संदर्भ में जोड़ा। हालांकि, मैं उन सभी विवरणों को समझ नहीं पा रहा हूं जो वे कहते हैं कि यह एक कचरा संग्रह मुद्दा है। अंततः मेरे इवेंट हैंडलर को कूड़ेदान में फेंक दिया गया था। वैश्विक दायरे पर आइटम संग्रह का संदर्भ इसे होने से रोकता है।

+0

बहुत बढ़िया है, यह देखने के बिना यह बताने में मुश्किल है कि मैं यहाँ बस इस बात की तलाश कर रहा था ... – keynesiancross

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