Outlook Addin в C # - Как добавить кнопку / группу в New Mail (рядом с подписями) - PullRequest
4 голосов
/ 04 марта 2010

У меня возникли проблемы с пониманием терминов Outlook (CommandBarPopup, CommandBarButton и т. Д.), Например с тем, что есть в Outlook, поэтому наберитесь терпения.

Я бы хотел создать пару вещей:

  1. Я хотел бы создать новую группу (или просто кнопку, но я прочитал, что невозможно добавить кнопку в существующую группу на ленте) на новом письме рядом с подписью / Добавить вложение на ленте сообщений. Он должен был бы работать так же, как работает Signature, поэтому при нажатии на него отображается несколько параметров. Как я могу его создать?

  2. Я хотел бы переопределить кнопку «NEW» (где вы можете выбрать, хотите ли вы отправлять новую почту, назначать встречу или делать другие вещи), чтобы при нахождении в главном окне при нажатии стрелки вниз рядом с новой кнопкой вы можете выбрать один из вариантов, которые я добавлю? Это возможно? Как мне это сделать?

  3. У меня есть код, который добавляет меню в главном окне

    private void AddMenuBar() {
        try {
            //Define the existent Menu Bar
            menuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar;
            //Define the new Menu Bar into the old menu bar
            newMenuBar = (Office.CommandBarPopup) menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, missing, missing, missing, false);
            //If I dont find the newMenuBar, I add it
            if (newMenuBar != null) {
                newMenuBar.Caption = "Test";
                newMenuBar.Tag = menuTag;
                buttonOne = (Office.CommandBarButton) newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, 1, true);
                buttonOne.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
                buttonOne.Caption = "Test Button";
                //This is the Icon near the Text
                buttonOne.FaceId = 610;
                buttonOne.Tag = "c123";
                //Insert Here the Button1.Click event    
                buttonOne.Click += new Office._CommandBarButtonEvents_ClickEventHandler(ButtonOneClick);
                newMenuBar.Visible = true;
            }
        } catch (Exception ex) {
            //This MessageBox is visible if there is an error
            System.Windows.Forms.MessageBox.Show("Error: " + ex.Message.ToString(), "Error Message Box", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    

Я хотел бы добавить подменю под кнопкой Один, чтобы при нажатии на него открывались новые подменю. Как мне этого добиться?

Ответы [ 2 ]

3 голосов
/ 08 марта 2010
  1. Невозможно из-за того, что OOM не предоставляет кнопку такого типа :( даже если MS использует ее. Вы можете скрыть группу Button, а затем создать свою собственную «похожую» группу, добавив стандартные команды, вроде как предоставив вам то же самое.

РЕДАКТИРОВАТЬ: XML, чтобы скрыть стандартную группу действий .. используя его свойство visible и его idMso

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load" loadImage="GetImage">
  <ribbon>
    <tabs>
      <tab idMso="TabReadMessage">
        <group idMso="GroupActions" visible="false">   
        </group>

        <group id="newactionsgroup" label="Actions" insertAfterMso="GroupActions">
          <button idMso="Delete" size="large"/>
          <button id="MoveToFolder" imageMso="MoveToFolder" size="large" label="Move To Folder" onAction="myMoveToFolder" />
          <button idMso="CreateMailRule" size="large"/>
          <menu idMso="OtherActionsMenu" size="large"/>
        </group>
     </tab>
    </tabs>
  </ribbon>
</customUI>
  1. Невозможно вообще, хотя вы можете снова скрыть существующую кнопку и создать нечто похожее с формой положения скважины!

3.Создайте свою кнопку One как CommandBarPopup

1 голос
/ 10 марта 2010

Не знаю, ищите ли вы это в своем втором пункте, но мне удалось добавить пользовательский пункт меню в выпадающий список «Создать» со следующим кодом:

  private void AddButtonToNewDropdown()
    {
        Office.CommandBar commandBar = this.Application.ActiveExplorer().CommandBars["Standard"];
        Office.CommandBarControl ctl = commandBar.Controls["&New"];
        if (ctl is Office.CommandBarPopup)
        {
            Office.CommandBarPopup newpopup = (Office.CommandBarPopup)ctl;
            commandBarButton = (Office.CommandBarButton)newpopup.Controls.Add(1, missing, missing, missing, true);
            commandBarButton.Caption = "My custom button";
            commandBarButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(ButtonClick);
        }

    }
...