Outlook: повторное использование группы лент на нескольких вкладках для отображения настраиваемой ленты в нескольких местах в Outlook (VSTO Addin, Ribbon Designer) - PullRequest
0 голосов
/ 01 мая 2020

Я разработчик (не XML) для определения своей пользовательской ленты следующим образом: в основном я определяю одну группу и добавляю ее в две разные вкладки, которые назначаются двум разным идентификаторам OfficeIds (TabAppointment и TabCalendar). К сожалению, лента отображается только в календаре, а не на встрече. Хотя, если я удаляю tab2, он появляется по назначению. Итак, я пришел к выводу, что есть только одна вкладка позволяет Как мне сделать sh повторное использование моей группы в двух вкладках / идентификаторах OfficeIs?

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>(); }
        }
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

Получаете ли вы какие-либо ошибки пользовательского интерфейса ленты?

По умолчанию, если надстройка пытается манипулировать пользовательским интерфейсом Microsoft Office (UI) и не работает, сообщение об ошибке не отображается. Однако вы можете настроить приложения Microsoft Office для отображения сообщений об ошибках, связанных с пользовательским интерфейсом. Эти сообщения можно использовать для определения того, почему пользовательская лента не отображается или почему лента появляется, но элементы управления не отображаются.

Для отображения ошибок интерфейса пользователя надстройки VSTO

  1. Запустите приложение.
  2. Перейдите на вкладку File.
  3. Нажмите Options.
  4. На панели категорий нажмите Advanced.
  5. В области сведений выберите Show VSTO Add-in user interface errors, а затем нажмите OK.

Для Outlook флажок Show VSTO Add-in user interface error находится в разделе «Разработчик» панели сведений. Для других приложений этот флажок находится в разделе «Общие» панели сведений. Подробнее об этом читайте в статье Как показать ошибки интерфейса пользователя надстройки .


Вам необходимо определить отдельную группу элементов управления для каждой вкладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...