Открытие двух лент с одной загрузкой для Excel 2010 с помощью C#
У меня есть две ленты, которые я хочу загрузить, одна на основной ленте и одна за кулисами. Я должен загрузить два в методе переопределения, но у меня возникли проблемы:
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 ответ
Ну, я думаю, что вы на самом деле не можете этого сделать, НО я разработал работу для тех из вас, кто заинтересован, что, похоже, не так много. Вы действительно можете объединить два XML и получить тандемную ленту Visual Designer, работающую вместе с лентой Backstage, единственная проблема в том, что вы не можете создавать больше элементов с помощью Visual Designer, вы должны создавать их с использованием XML, который не является плохой путь, но если ваш конечный пользователь все еще хочет добавить кнопки и другие элементы на ленту, это может быть проблемой. Так что я сделал для этого добавление двух разных проектов к одному решению, тогда вам просто нужно, чтобы два проекта разговаривали друг с другом, и у вас есть свой ответ. Убедитесь, что у вас есть ссылка для основной ленты с Backstage, затем вам нужно создать COM-объект на ленте Backstage:
[ComVisible(true)]
[ComDefaultInterface(typeof(IBackStageInfo))]
И это действительно так. Не так уж плохо.