Открытие двух лент с одной загрузкой для Excel 2010 с помощью C # - PullRequest
1 голос
/ 07 ноября 2011

У меня есть две ленты, которые я хочу загрузить, одна на основной ленте и одна за кулисами.Я должен загрузить два в методе переопределения, но у меня возникают проблемы:

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
     return Globals.Factory.GetRibbonFactory().CreateRibbonManager(new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] 
     {
          new Ribbon1(), 
          new Backstage() as Microsoft.Office.Tools.Ribbon.IRibbonExtension 
     });
}

Если я сделаю это, Ribbon1 покажет, но Backstage не будет, если я сделаю это следующим образом:

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
    return new Microsoft.Office.Tools.Ribbon.RibbonManager(new Microsoft.Office.Tools.Ribbon.OfficeRibbon[]
    {
       new Ribbon1() as Microsoft.Office.Tools.Ribbon.OfficeRibbon,
       new Backstage() as Microsoft.Office.Tools.Ribbon.OfficeRibbon
    });
}

Я не могу создать экземпляр абстрактного класса или интерфейса с RibbonManager.Я застрял, может кто-нибудь помочь?

1 Ответ

0 голосов
/ 14 ноября 2011

Ну, я думаю, что вы на самом деле не можете сделать это, НО я разработал работу для тех из вас, кто заинтересован, что не кажется многим. Вы действительно можете объединить два XML и получить тандемную ленту Visual Designer, работающую вместе с лентой Backstage, единственная проблема в том, что вы не можете создавать больше элементов с помощью Visual Designer, вы должны создавать их с использованием XML, который не является плохой путь, но если ваш конечный пользователь все еще хочет добавить кнопки и другие элементы на ленту, это может быть проблемой. Так что я сделал для этого добавление двух разных проектов к одному решению, тогда вам просто нужно, чтобы два проекта разговаривали друг с другом, и у вас есть свой ответ. Убедитесь, что у вас есть ссылка для основной ленты с Backstage, затем вам нужно создать COM-объект на ленте Backstage:

[ComVisible(true)]
[ComDefaultInterface(typeof(IBackStageInfo))]

И это действительно так. Не так уж и плохо.

...