Офисные надстройки ленты: та же вкладка с 2 надстройками - PullRequest
8 голосов
/ 21 августа 2011

Я пытаюсь сделать так, чтобы две надстройки для слов появлялись на одной вкладке (Инструменты), но обе они создают уникальные вкладки (есть две вкладки «Инструменты»). Я видел это видео , но я использую Visual Designer, а не XML.

Могу ли я каким-то образом отредактировать код дизайнера, чтобы сделать эту работу?

1 Ответ

4 голосов
/ 30 ноября 2012

http://blogs.msdn.com/b/vsto/archive/2008/03/10/share-a-ribbon-customization-between-office-applications.aspx

Office 2007

Создание ленты

  1. Создание проекта 2007 Excel, Outlook, PowerPoint или Word 2007в Visual Studio.Для выполнения этих шагов создайте проект C # и назовите проект RibbonStarterProject.
  2. Добавьте элемент ленты (Visual Designer) в проект.Для этих шагов примите имя по умолчанию «Лента1».
  3. Сохраните и закройте проект.

Создайте проект библиотеки классов

  1. Создайте новый проект библиотеки классов в Visual Studio.Для этих шагов назовите проект SharedRibbonLibrary.
  2. Добавьте ссылку на проект в сборку Microsoft.Office.Tools.Common.v9.0.
  3. В меню проекта в Visual Studioщелкните «Добавить существующий элемент».
  4. В диалоговом окне «Добавить существующий элемент» перейдите в каталог проекта «RibbonStarterProject», выберите файл Ribbon.cs и нажмите «Добавить».Ribbon1.cs копируется в каталог проекта и отображается под узлом проекта в обозревателе решений.
  5. Дважды щелкните Ribbon1.cs.Появится дизайнер ленты.
  6. На вкладке Элементы управления ленты Office на панели инструментов перетащите кнопку на группу 1.
  7. Нажмите кнопку 1, чтобы выбрать ее.
  8. В окне "Свойства" выберитеустановите Модификаторы в Public.Примечание. По умолчанию элементы управления, добавляемые на ленту, являются внутренними.Это делает их доступными только для кода внутри одной сборки.Однако, когда вы получите доступ к этим элементам управления, вы получите доступ к ним через ссылку на сборку.Поэтому, чтобы получить доступ к ним из кода, вы должны сделать их публичными.Подробнее об этом в ближайшее время.
  9. Щелкните правой кнопкой мыши конструктор ленты и выберите «Свойства».
  10. В окне «Свойства» выберите свойство RibbonType и выберите идентификаторы ленты для приложений или Outlook.Окна инспектора, в которых вы хотите, чтобы появилась лента.Дополнительные сведения об этом свойстве см. В справочном разделе MSDN для свойства RibbonType.
  11. В обозревателе решений щелкните правой кнопкой мыши Ribbon1.cs и выберите команду Просмотреть код.
  12. Измените пространство именкласс «SharedRibbonLibrary».
  13. Повторите этот шаг для файла Ribbon1.designer.cs.
  14. Скомпилируйте и сохраните проект SharedRibbonLibrary.Теперь вы можете использовать полученную сборку в любом проекте VSTO, который поддерживает ленту.

Использовать настройку ленты

  1. Создать 2007 Excel, Outlook, PowerPoint или Word проект.
  2. Добавьте ссылку на сборку SharedRibbonLibrary.
  3. Добавьте следующий код в класс ThisAddin, ThisWorkbook или ThisDocument вашего проекта.Этот код переопределяет метод CreateRibbonExtensibilityObject и возвращает ленту в приложение Office.

    protected override Microsoft.Office.Core.IRibbonExtensibility
    CreateRibbonExtensibilityObject()
    {
         return new Microsoft.Office.Tools.Ribbon.RibbonManager(
         new Microsoft.Office.Tools.Ribbon.OfficeRibbon[] { new       
            SharedRibbonLibrary.Ribbon1() });
    
    }
    
  4. Добавить новый класс в проект.Примите имя по умолчанию «Class1.cs».

  5. Замените код в файле Class1 следующим:

     partial class ThisRibbonCollection :    Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection
    {
     internal SharedRibbonLibrary.Ribbon1 Ribbon1
     {
         get { return this.GetRibbon<SharedRibbonLibrary.Ribbon1>(); }
     }
    }
    

Ok -Вы сделали!Теперь вы можете получить доступ к ленте и кнопке, которую вы добавили к ленте в своем коде.Давайте попробуем обработать событие в потребляющем проекте.

Обработка события нажатия кнопки

  1. Добавьте следующий код в обработчик события запуска проекта.

    Globals.Ribbons.Ribbon1.button1.Click += new EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(button1_Click);
    
  2. Добавьте следующий обработчик событий в ваш проект:

    void button1_Click(object sender,
    Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs e)
    {
    System.Windows.Forms.MessageBox.Show("I can handle events!");
    }
    
  3. Запустите проект.

  4. Когда откроется приложение Office, перейдите на вкладку «Надстройки» и нажмите кнопку.Появляется сообщение «Я могу обрабатывать события!».

Реализация Office 2010 : http://blogs.msdn.com/b/vsto/archive/2010/06/23/sharing-a-ribbon-customization-between-office-projects-in-visual-studio-2010-mclean-schofield.aspx

Реализация 2010 года фактически добавляет дваЛенты - по одной на каждую надстройку.Я считаю, что статья применима только к надстройкам на одной ленте в разных продуктах Office (например, Word и Excel), но не к двум надстройкам Excel.

Единственный другойя обнаружил, что это сторонний компонент: http://www.add -in-express.com / creation-addins-blog / 2012/11/05 / excel-addin-shared-ribbon-tabs /

...