【问题标题】:Outlook: Reuse Ribbon Group in multiple tabs to show custom ribbon in multiple places in outlook (VSTO Addin, Ribbon Designer)Outlook:在多个选项卡中重用功能区组以在 Outlook 的多个位置显示自定义功能区(VSTO 插件、功能区设计器)
【发布时间】:2020-08-15 22:26:53
【问题描述】:

我是设计师(不是 XML)来定义我的自定义功能区,如下所示: 基本上,我定义了一个组并将其添加到分配给两个不同 OfficeId(TabAppointment 和 TabCalendar)的两个不同选项卡中。不幸的是,功能区只出现在日历上,而不是约会上。虽然如果我删除 tab2 它会在约会时显示。所以我得出结论,只有一个选项卡允许? 如何在两个选项卡/OfficeId 中重用我的组?

namespace OutlookAddIn4
{
    partial class MyAddInDo : Microsoft.Office.Tools.Ribbon.RibbonBase
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        public MyAddInDo()
            : base(Globals.Factory.GetRibbonFactory())
        {
            InitializeComponent();
        }

        /// <summary> 
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">"true", wenn verwaltete Ressourcen gelöscht werden sollen, andernfalls "false".</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Komponenten-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für Designerunterstützung -
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.tab1 = this.Factory.CreateRibbonTab();
            this.group1 = this.Factory.CreateRibbonGroup();
            this.btnAddMyAddInDo = this.Factory.CreateRibbonButton();
            this.btnViewInMyAddInDo = this.Factory.CreateRibbonButton();
            this.btnRemoveFromMyAddInDo = this.Factory.CreateRibbonButton();
            this.btnSettings = this.Factory.CreateRibbonButton();
            this.tab2 = this.Factory.CreateRibbonTab();
            this.tab1.SuspendLayout();
            this.group1.SuspendLayout();
            this.tab2.SuspendLayout();
            this.SuspendLayout();
            // 
            // tab1
            // 
            this.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
            this.tab1.ControlId.OfficeId = "TabAppointment";
            this.tab1.Groups.Add(this.group1);
            this.tab1.Label = "TabAppointment";
            this.tab1.Name = "tab1";
            // 
            // group1
            // 
            this.group1.Items.Add(this.btnAddMyAddInDo);
            this.group1.Items.Add(this.btnViewInMyAddInDo);
            this.group1.Items.Add(this.btnRemoveFromMyAddInDo);
            this.group1.Items.Add(this.btnSettings);
            this.group1.Label = "MyAddInDo";
            this.group1.Name = "group1";
            this.group1.Position = this.Factory.RibbonPosition.AfterOfficeId("GroupActions");
            // 
            // btnAddMyAddInDo
            // 
            this.btnAddMyAddInDo.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnAddMyAddInDo.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnAddMyAddInDo.Label = "Add Minutes";
            this.btnAddMyAddInDo.Name = "btnAddMyAddInDo";
            this.btnAddMyAddInDo.ShowImage = true;
            this.btnAddMyAddInDo.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnAddMyAddInDo_Click);
            // 
            // btnViewInMyAddInDo
            // 
            this.btnViewInMyAddInDo.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnViewInMyAddInDo.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnViewInMyAddInDo.Label = "View Minutes";
            this.btnViewInMyAddInDo.Name = "btnViewInMyAddInDo";
            this.btnViewInMyAddInDo.ShowImage = true;
            this.btnViewInMyAddInDo.Visible = false;
            this.btnViewInMyAddInDo.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ViewInMyAddInDo_Click);
            // 
            // btnRemoveFromMyAddInDo
            // 
            this.btnRemoveFromMyAddInDo.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnRemoveFromMyAddInDo.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnRemoveFromMyAddInDo.Label = "Remove Minutes";
            this.btnRemoveFromMyAddInDo.Name = "btnRemoveFromMyAddInDo";
            this.btnRemoveFromMyAddInDo.ShowImage = true;
            this.btnRemoveFromMyAddInDo.Visible = false;
            this.btnRemoveFromMyAddInDo.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.RemoveFromMyAddInDo_Click);
            // 
            // btnSettings
            // 
            this.btnSettings.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnSettings.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnSettings.Label = "Settings";
            this.btnSettings.Name = "btnSettings";
            this.btnSettings.ShowImage = true;
            this.btnSettings.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.Settings_Click);
            // 
            // tab2
            // 

            this.tab2.Label = "tab2";
            this.tab2.Name = "tab2";
            this.tab2.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
            this.tab2.ControlId.OfficeId = "TabCalendar";
            this.tab2.Groups.Add(this.group1);
            this.tab2.Label = "TabSettings";            


            // 
            // MyAddInDo
            // 
            this.Name = "MyAddInDo";
            this.RibbonType = "Microsoft.Outlook.Appointment, Microsoft.Outlook.Explorer";
            this.Tabs.Add(this.tab2);
            this.Tabs.Add(this.tab1);
            this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.MyAddInDo_Load);
            this.tab1.ResumeLayout(false);
            this.tab1.PerformLayout();
            this.tab2.ResumeLayout(false);
            this.tab2.PerformLayout();
            this.group1.ResumeLayout(false);
            this.group1.PerformLayout();
            this.ResumeLayout(false);

        }

        #endregion

        internal Microsoft.Office.Tools.Ribbon.RibbonTab tab1;
        internal Microsoft.Office.Tools.Ribbon.RibbonGroup group1;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnAddMyAddInDo;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnViewInMyAddInDo;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnRemoveFromMyAddInDo;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnSettings;
        internal SettingsForm settingsForm;
        internal Microsoft.Office.Tools.Ribbon.RibbonTab tab2;
    }

    partial class ThisRibbonCollection
    {
        internal MyAddInDo MyAddInDo
        {
            get { return this.GetRibbon<MyAddInDo>(); }
        }
    }
}

【问题讨论】:

    标签: vsto outlook-addin ribbon


    【解决方案1】:

    您是否收到任何功能区 UI 错误?

    默认情况下,如果加载项尝试操作 Microsoft Office 用户界面 (UI) 并失败,则不会显示任何错误消息。但是,您可以将 Microsoft Office 应用程序配置为显示与 UI 相关的错误消息。您可以使用这些消息来帮助确定不显示自定义功能区的原因,或显示功能区但未显示控件的原因。

    显示 VSTO 插件用户界面错误

    1. 启动应用程序。
    2. 点击File 标签。
    3. 点击Options
    4. 在类别窗格中,单击Advanced
    5. 在详细信息窗格中,选择Show VSTO Add-in user interface errors,然后单击OK

    对于 Outlook,Show VSTO Add-in user interface 错误复选框位于详细信息窗格的“开发人员”部分。对于其他应用程序,该复选框位于详细信息窗格的“常规”部分。在How to: Show Add-in user interface errors 文章中阅读更多相关信息。


    您需要为每个选项卡定义一组单独的控件。

    【讨论】:

    • 是的,我收到以下错误消息,例如(以德语给出):错误代码“0x80004005”找不到OfficeId:“TabAppointment”。虽然 TabAppointment 是有效的 OfficeId?那么我是否需要为每个选项卡定义一个单独的组?我可以在不同的组中重复使用按钮吗?
    • 不。该错误表明 Outlook 窗口中没有这样的选项卡。您需要使用仅包含特定上下文的自定义功能区 UI 部分的功能区 XML - 约会、邮件等。
    猜你喜欢
    • 2015-07-28
    • 2013-03-08
    • 2015-01-26
    • 2017-05-08
    • 2021-06-13
    • 2018-05-07
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多