在多个标签页中重用功能区组,以在outlook中的多个地方显示自定义功能区(VSTO插件,功能区设计器)。在多个标签页中重用功能区组,在outlook中的多个地方显示自定义功能区(VSTO插件,功能区设计器)。

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

我的设计师(不是XML)定义我的自定义功能区是这样的:基本上我定义了一个组,并将其添加到两个不同的标签页,这两个标签页被分配到两个不同的OfficeIds(TabAppointment和TabCalendar)。不幸的是,功能区只在日历上显示,而不是在约会上显示。虽然如果我删除标签2,它就会显示在约会上。所以我的结论是,只有一个标签页是允许的。我如何才能完成重用我的组在两个标签OfficeIds?

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个回答
0
投票

您是否收到任何功能区用户界面错误?

默认情况下,如果一个加载项试图操作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 错误复选框位于详细信息窗格的开发者部分。对于其他应用程序,该复选框位于详细信息窗格的 "常规 "部分。阅读更多信息,请参见 怎么做。显示插件用户界面错误 的文章。


你需要为每个标签页单独定义一组控件。

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