将现有任务窗格添加到新邮件 - Outlook

时间:2017-01-28 11:01:21

标签: vb.net user-controls outlook-addin outlook-vba webusercontrol

我有一个Outlook任务窗格,当您打开Outlook时会打开,我已经使用这种方法添加了它。

https://msdn.microsoft.com/en-us/library/aa942846.aspx

我使用此处给出的示例显示并隐藏任务窗格:

https://msdn.microsoft.com/en-us/library/bb608590.aspx

因此,当用户点击切换按钮时,这适用于电子邮件。但是,我在Outlook的“新邮件消息”窗口中添加了另一个功能区控件,我希望同一个任务窗格也可以在该窗口的一侧使用。我设法创建另一个功能区控件(设计器)并添加了这个新按钮但是当我切换它时,它不会在新邮件消息窗口上打开任务窗格。它仅切换收件箱中可用的现有任务窗格窗口。

新邮件功能区控件的代码:

Imports Microsoft.Office.Tools.Ribbon
Imports Outlook = Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Tools

Public Class ComposeSidebarRibbon

    Private Sub ComposeSidebarRibbon_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load

    End Sub

    Private Sub SidebarToggleButton_Click(sender As Object, e As RibbonControlEventArgs) Handles SidebarToggleButton.Click
        Globals.ThisAddIn.TaskPane.Visible = TryCast(sender, Microsoft.Office.Tools.Ribbon.RibbonToggleButton).Checked
    End Sub
End Class

我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

根据MSDN,您可以使用不同的ID来添加多个功能区 -

  

您可以向项目添加多个功能区。如果多个功能区共享功能区ID,请覆盖项目的ThisAddin类中的CreateRibbonExtensibilityObject方法,以指定在运行时显示哪个功能区。

用于此的功能类似于 -

Protected Overrides Function CreateRibbonExtensibilityObject() As  _
    Microsoft.Office.Core.IRibbonExtensibility
    If myCondition = True Then
        Return Globals.Factory.GetRibbonFactory().CreateRibbonManager _
            (New Microsoft.Office.Tools.Ribbon.IRibbonExtension() _
                 {New Ribbon1()})
    Else
        Return Globals.Factory.GetRibbonFactory().CreateRibbonManager _
            (New Microsoft.Office.Tools.Ribbon.IRibbonExtension() _
                 {New Ribbon2()})
    End If
End Function

请参阅MSDN参考HERE