2012-10-24 56 views
2

我正在使用Visual Studio 2008(.Net 3.5)创建要在Outlook 2010中使用的Addin。我有两个单独的色带定义。其中一个用于创建附件的上下文菜单,另一个用于向TabReadMessage添加按钮。CreateRibbonExtensibilityObject只创建一个功能区对象 - Outlook 2010 Addin

我很困惑我应该如何让他们加载。我有一个ThisAddIn.vb功能不可能做我想做的事情 - 同时加载色带:

Protected Overrides Function CreateRibbonExtensibilityObject() As _ 
     Microsoft.Office.Core.IRibbonExtensibility 

    Return New RibbonAttachAttachmentToPO() 
    Return New RibbonOutlook14ReadMail() 
End Function 

什么是解决这个问题的最佳解决方案?

回答

4

您将拥有2个XML文件,一个用于TabReadMessage,一个用于附件上下文菜单。 然后,您将只需要一个Ribbon类,CreateRibbonExtensibilityObject()将加载Ribbon类。

在功能区类的GetCustomUI()函数中,无论是在资源管理器还是检查器中,都将根据您所在的Outlook的哪一部分加载相应的XML文件。

你可以这样做(VB.Net):

Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Microsoft.Office.Core.IRibbonExtensibility.GetCustomUI 
    Select Case ribbonID 
     Case "Microsoft.Outlook.Mail.Read" 'For TabReadMessage 
     Return GetResourceText("The.Read.Message.XML") 
     Case "Microsoft.Outlook.Mail.Compose" 'For compose new email message 
     Return GetResourceText(".....") 
     Case ... 
    End Select 
End Function 
相关问题