2011-11-07 30 views
0

我有兩個要裝入的色帶,一個在主要功能區,另一個在後臺。我需要加載覆蓋方法中的兩個,但我有麻煩:使用c打開兩個帶有一個負載的excel 2010的色帶#

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將顯示,但後臺不會,如果我做這種方式:

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創建抽象類或接口的實例。 我被卡住了,有人可以幫忙嗎?

回答

0

嗯,我猜你實際上不能這樣做,但是我確實爲那些感興趣的人開發了一項工作,而這些工作看起來並不像很多。您確實可以合併這兩個XML並獲得串聯的可視設計器功能區以及Backstage功能區,唯一的問題是無法使用可視設計器創建更多項目,您必須使用XML創建它們,而這不是糟糕的路要走,但如果您的最終用戶仍然想要添加按鈕和其他項目到功能區,這可能是一個問題。所以我爲此做了兩個不同的項目添加到一個解決方案,那麼你只需要讓這兩個項目相互交談,你就可以得到答案。請確保你有你與後臺主功能區的參考,那麼你必須在後臺色帶創建一個COM對象:

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

這是不是真的。沒有那麼糟糕。

相關問題