簡體   English   中英

添加到 Excel 的 VSTO 的功能區是 RibbonBase 類型而不是 IRibbonExtensibility

[英]The ribbon added to a VSTO for Excel is of type RibbonBase and not IRibbonExtensibility

我正在構建一個 VSTO 應用程序 (WinForms) 並按照以下說明進行操作:

https://docs.microsoft.com/en-us/visualstudio/vsto/walkthrough-creating-a-custom-tab-by-using-ribbon-xml?view=vs-2019

步驟如下所示:

  1. 在項目菜單上,單擊添加新項。
  2. 在添加新項目對話框中,select 功能區 (XML)。
  3. 將新功能區的名稱更改為 MyRibbon,然后單擊添加。 MyRibbon.cs 或 MyRibbon.vb 文件在設計器中打開。 名為 MyRibbon.xml 的 XML 文件也會添加到您的項目中。
  4. 在解決方案資源管理器中,右鍵單擊 ThisAddin.cs 或 ThisAddin.vb,然后單擊查看代碼。
  5. 將以下代碼添加到 ThisAddin class。 此代碼覆蓋 CreateRibbonExtensibilityObject 方法並將功能區 XML class 返回給 Office 應用程序。

當我在步驟 5 中添加CreateRibbonExtensibilityObject()代碼時(如下所示):

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
        {
            return new MyRibbon();
        }

我收到以下錯誤:

Cannot implicitly convert the type MyRibbon to Microsoft.Office.Core.IRibbonExtensibility. An explicit conversion exists (are you missing a cast)?

Visual Studion 生成的 class 是RibbonBase類型。

 partial class CLIREMPRibbon : Microsoft.Office.Tools.Ribbon.RibbonBase {...}

下面的類型轉換會引發異常:

Unable to cast object of type MyRibbon to type Microsoft.Office.Core.IRibbonExtensibility.

如何將 RibbonBase 的正確類型轉換應用於 IRibbonExtensibility 接口實例?

在 VSTO 中,您可以使用可視化設計器創建基本的自定義 Fluent UI,然后將其導出到功能區 XML 文件,之后可以進行擴展。 不幸的是,功能區設計器中並非所有功能都可用,因此有時您必須改用原始 XML 標記。 如何:將功能區從功能區設計器導出到功能區 XML文章中了解更多信息。 因此,如果您對設計人員感到滿意,則無需修改代碼中的任何內容。 您必須選擇一種或另一種方式來自定義 Fluent UI。

看:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.addinbase.createribbonextensibilityobject?view=vsto-2017

您不必重寫此方法來返回使用功能區(可視化設計器)項目模板添加到項目中的功能區

默認情況下,此方法返回一個 RibbonManager object,它代表項目中的所有 Ribbon(可視化設計器)項。 有關詳細信息,請參閱功能區概述。”

我已從 XML 切換到使用可視化設計器,以便添加活動面板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM