如何在outlook的“报告”选项卡中添加自定义功能区按钮

问题描述 投票:0回答:2

我想在Outlook的“报告”标签中添加自定义功能区按钮。我可以在Outlook的“主页”选项卡中添加功能区按钮。在这里,我已将图像附加到我想要添加自定义功能区按钮的位置。

enter image description here

谢谢

c# outlook vsto outlook-addin
2个回答
1
投票

功能区XML代码在这里,

<ribbon>
    <tabs>
      <tab idMso="TabReadMessage">
        <group id="grpMessageRibbon" Label="My Group">
          <button id="btnTest" Label="My Button" size="large" />
        </group>
      </tab>
    </tabs>    
  </ribbon>

功能区XML加载基于它的功能区ID。

  public string GetCustomUI(string ribbonID)
        {
            string ribbonXML = String.Empty;

            if (ribbonID == "Microsoft.Outlook.Report")
            {
                ribbonXML = GetResourceText("MicrosoftOutlookReport.xml");
            }

            return ribbonXML;
        }

谢谢


0
投票

屏幕截图中显示的内置选项卡的idMso是TabReadMessage。您只需要在GetCustomUI回调中返回适当的功能区XML标记。

Microsoft Office应用程序调用GetCustomUI方法以获取定义自定义功能区的用户界面的XML字符串。

public class Connect : Object, Extensibility.IDTExtensibility2, IRibbonExtensibility 
... 

public string GetCustomUI(string RibbonID) 
{ 

   StreamReader customUIReader = new System.IO.StreamReader("C:\\RibbonXSampleCS\\customUI.xml"); 

   string customUIData = customUIReader.ReadToEnd(); 

   return customUIData; 
 }

注意,有时您需要为作为参数传递的不同ribbonID值返回XML标记。在这种情况下,您将获得调用的onLoad回调(对于检查员也是如此)。

    public string GetCustomUI(string ribbonID)
    {
        string ribbonXML = String.Empty;

        if (ribbonID == "Microsoft.Outlook.Mail.Read")
        {
            ribbonXML = GetResourceText("Trin_RibbonOutlookBasic.Ribbon1.xml");
        }

        return ribbonXML;
    }

有关更多信息,请参阅Customizing a Ribbon for Outlook

您可以在MSDN的以下系列文章中阅读有关Fluent UI(aka Ribbon UI)的更多信息:

请记住,默认情况下,如果VSTO加载项尝试操作Microsoft Office用户界面(UI)并失败,则不会显示任何错误消息。但是,您可以将Microsoft Office应用程序配置为显示与UI相关的错误的消息。您可以使用这些消息来帮助确定未显示自定义功能区的原因,或者为何显示功能区但未显示控件的原因。有关更多信息,请参阅How to: Show Add-in User Interface Errors

© www.soinside.com 2019 - 2024. All rights reserved.