Отображать надстройки Outlook рядом с новыми элементами Outlook

#outlook #outlook-addin #outlook-2016

#outlook #outlook-надстройка #outlook-2016

Вопрос:

Я создал надстройки Outlook, и они работают должным образом. Недавно установленная надстройка отображается на вкладке «Главная» Outlook. Она отображается как новая группа.

Мне нужно, чтобы моя надстройка отображалась рядом с опцией «Новый элемент», присутствующей в Outlook.

Для лучшего понимания, пожалуйста, посмотрите на изображение. Мне нужно, чтобы моя надстройка была точно указана в позиции желтого цвета.

Фрагмент кода

 private void InitializeComponent() {
        this.tabCustomHome = this.Factory.CreateRibbonTab();
        this.group1 = this.Factory.CreateRibbonGroup();
        this.menuButton1 = this.Factory.CreateRibbonMenu();
        this.btnLogin = this.Factory.CreateRibbonButton();
        this.btnLogout = this.Factory.CreateRibbonButton();
        this.tabCustomHome.SuspendLayout();
        this.group1.SuspendLayout();
        this.SuspendLayout();
        // 
        // tabCustomHome
        // 
        this.tabCustomHome.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
        this.tabCustomHome.ControlId.OfficeId = "TabMail";
        this.tabCustomHome.Groups.Add(this.group1);
        this.tabCustomHome.Label = "TabMail";
        this.tabCustomHome.Name = "tabCustomHome";
        // 
        // group1
        // 
        this.group1.Items.Add(this.menuButton1);
        this.group1.Label = "Sample";
        this.group1.Name = "group1";
        // 
        // menuButton1
        // 
        this.menuButton1.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
        this.menuButton1.Dynamic = true;
        this.menuButton1.Image = global::SHOutlookLogin.Properties.Resources.Sales;
        this.menuButton1.Label = " ";
        this.menuButton1.Name = "menuButton1";
        this.menuButton1.ShowImage = true;
        // 
        // btnLogin
        // 
        this.btnLogin.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
        this.btnLogin.Label = "Login";
        this.btnLogin.Name = "btnLogin";
        this.btnLogin.ShowImage = true;
        this.btnLogin.Click  = BtnLogin_Click;
        // 
        // btnLogout
        // 
        this.btnLogout.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
        this.btnLogout.Label = "Logout";
        this.btnLogout.Name = "btnLogout";
        this.btnLogout.ShowImage = true;
        this.btnLogout.Click  = BtnLogout_Click;
        // 
        // OutlookLoginRibbon
        // 
        this.Name = "OutlookLoginRibbon";
        this.RibbonType = "Microsoft.Outlook.Explorer";
        this.Tabs.Add(this.tabCustomHome);
        this.Load  = new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.OutlookLoginRibbon_Load);
        this.tabCustomHome.ResumeLayout(false);
        this.tabCustomHome.PerformLayout();
        this.group1.ResumeLayout(false);
        this.group1.PerformLayout();
        this.ResumeLayout(false);

    }



    #endregion

    internal Microsoft.Office.Tools.Ribbon.RibbonTab tabCustomHome;
    internal Microsoft.Office.Tools.Ribbon.RibbonGroup group1;
    internal Microsoft.Office.Tools.Ribbon.RibbonButton btnLogin;
    internal Microsoft.Office.Tools.Ribbon.RibbonButton btnLogout;
    internal Microsoft.Office.Tools.Ribbon.RibbonMenu menuButton1;
  

введите описание изображения здесь

Ответ №1:

Необходимо использовать следующую разметку:

 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded_Callback">
  <ribbon startFromScratch="false">
    <tabs>
      <tab getVisible="getVisible_Callback" idMso="TabMail">
        <group getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getVisible="getVisible_Callback" id="RibbonGroup_3b56363af4b447adb1126bb6791405c7" insertAfterMso="GroupMailNew">
           <button getDescription="getDescription_Callback" getEnabled="getEnabled_Callback" getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getShowImage="getShowImage_Callback" getShowLabel="getShowLabel_Callback" getSize="getSize_Callback" getVisible="getVisible_Callback" id="RibbonButton_7f2ec50f5d65467fbcf3cadef7e8ab15" onAction="onActionCommon_Callback" />
        </group>
     </tab>
   </tabs>
  </ribbon>
</customUI>   
  

В результате в Outlook должно получиться следующее изображение:

Outlook 2013 с пользовательскими элементами управления Ribbon на встроенной вкладке

Вам может оказаться полезной статья Пошаговое руководство: создание пользовательской вкладки с помощью Ribbon XML.

Комментарии:

1. Спасибо за обновление. Мне нужно то же самое из кода C #. вы можете мне помочь?

2. Вам просто нужно определить GetCustomUI обратный вызов в коде. Остальные обратные вызовы зависят от вас.

3. Я добавил пошаговое руководство, в котором приведены необходимые шаги для создания вкладки ленты с помощью примера кода на C #.

4. Я добавил свой текущий код. Если я не ошибаюсь, мне нужно добавить некоторый идентификатор, отображающий его рядом с новыми элементами. Было бы здорово, если бы вы помогли мне с тем, какие изменения я должен внести в свой код. Поскольку я новичок в надстройке Outlook, я не очень хорошо знаком с ней.

5. Вы можете найти требуемые idMso значения в разметке, представленной выше.