2014-12-26 16 views
0

我正在使用add-in-express開發Outlook插件。我在那裏添加了一個adxOlFormsManager。其中包含一個名爲'adxOlFormsCollectionItem1'的Forms集合。我已經將表單類名稱設置爲「FlowOutlook.Plugins.Chat.ChatExplorerPane」。是的,ChatExplorerPane是我的ADXOlForm。將ADXOlExplorerLayout設置爲DockRight

我實現了使用下面的代碼我ADXOlform自定義事件:

 private void AddinModule_AddinStartupComplete(object sender, EventArgs e) 
     { 
      try 
      { 
var currentChatTypeForm = AddinModule.CurrentInstance.adxOlFormsCollectionItem1.FormInstances(0) as ChatExplorerPane; 
       currentChatTypeForm.OnChatTypeSelected += currentChatTypeForm_OnChatTypeSelected;     

} 
      catch (Exception ex) 
      { 
       Debug.DebugMessage(2, "AddinModule : Error in AddinModule_AddinStartupComplete() : " + ex.Message); 
      } 
     } 

我的問題是:

如果我探險佈局爲「RightSubpane」這工作得很好。但是,在我將資源管理器佈局更改爲dock right(使用Properties窗口)後,adxOlFormsCollectionItem1.FormInstanceCount爲0.(這意味着「currentChatTypeForm」將爲null)。

我所應該做的事:

 private void ChangeExplorerLayout(AddinExpress.OL.ADXOlForm form) 
     { 
      if (form == null) return; 
      form.XXX = AddinExpress.OL.ADXOlExplorerLayout.DockRight;    
     } 

我上面的方法,通過代碼來改變資源管理器的佈局中寫道。我希望我可以在初始化我的自定義方法後,在AddinModule_AddinStartupComplete內安全地調用它。但我需要知道代替'XXX'的代碼才能完成該方法並嘗試。

請指教我根據我的要求更改資源管理器佈局作爲碼頭權利。

Kushan Randima。

回答

0

以下是手冊中的引文 - 請參閱部分在開發PC上的文件夾{Add-in Express} \ Docs中的PDF文件中訪問表單實例

Add-in Express窗格建立在主機應用程序的窗口上,而不是應用程序的對象模型的事件上。這意味着如果在窗格顯示之前或隱藏窗格之後發出調用,則在特定事件中獲取外接快速窗格的實例可能會導致null(VB.NET中爲Nothing)。例如,在Excel,Word和PowerPoint中通常使用WindowActivate/WindowDeactivate。

...

所以,你可以,如果你的外接在事件上面檢索窗格實例遇到問題。爲了繞過這個問題,我們建議修改外接程序的代碼,以便獲得有關顯示或隱藏的窗格實例的通知(而不是通過處理上述事件來獲取窗格實例)。使用任務窗格類(Excel,Word和PowerPoint)的ADXBeforeTaskPaneShow事件和ADXOlForm.ADXBeforeFormShow(Outlook)事件來通知有關顯示的指定窗格實例。當表單隱藏時,您將獲得任務窗格類(Excel,Word和PowerPoint)的ADXOlForm.ADXAfterFormHide(Outlook)和ADXAfterTaskPaneHide事件。

也就是說,不是在AddinStartupcomplete事件中獲取表單實例,而是可以處理ADXOlForm.ADXBeforeFormShow事件。

希望這會有所幫助。

+0

謝謝。我讀了書中提到的部分。如果我使用ADX事件,我可能會失去在addinModule中初始化自定義事件的機會。任何解決方案? –

+0

請參閱 - http://stackoverflow.com/documentation/outlook-addin/commit –