2011-05-11 83 views
1

我正在編寫一個Outlook向Outlook添加菜單的外接程序。 儘管我將代理設置爲菜單的操作,但似乎在一次調用代理後將其刪除 - 一次單擊菜單項。下次用戶點擊它沒有得到我的代表。 代碼示例:onclick委託僅被觸發一次

menuCommand = (Office.CommandBarButton)cmdBarControl.Controls.Add(
Office.MsoControlType.msoControlButton, missing, missing, missing, true); 

menuCommand.Caption = "&Generate weekly..."; 
menuCommand.Tag = "Generate"; 
menuCommand.FaceId = 65; 

menuCommand.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(
menuCommand_Generate_Click); 

menuCommand = (Office.CommandBarButton)cmdBarControl.Controls.Add(
    Office.MsoControlType.msoControlButton, missing, missing, missing, true); 

menuCommand.Caption = "&About"; 
menuCommand.Tag = "About"; 
menuCommand.FaceId = 65; 

menuCommand.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(
menuCommand_About_Click); 
menuCommand.BeginGroup = true; 

我應該爲了使菜單做觸發每次行動?

+0

這是什麼問題? – jv42 2011-05-11 12:21:49

+0

我澄清了它。 – oshai 2011-05-11 13:02:06

回答

1

menuitem是一個局部變量嗎? , 因此,一旦垃圾收集器超出範圍,垃圾收集器可能會清理乾淨。

嘗試將變量保留在全局對象中。

+0

如果你的意思是'menuCommand',那麼它不是本地的。 – oshai 2011-05-11 12:59:55

+1

我現在看到您正在爲第二個按鈕重新使用相同的變量。這也會導致第一個按鈕成爲垃圾收集的候選對象。 – 2011-05-11 13:16:58

+0

謝謝!這解決了這個問題。 – oshai 2011-05-11 13:53:50

相關問題