添加到 Excel 的 VSTO 的功能区属于 RibbonBase 类型,而不是 IRibbonExtensibility
The ribbon added to a VSTO for Excel is of type RibbonBase and not IRibbonExtensibility
我正在构建一个 VSTO 应用程序 (WinForms) 并按照以下位置的说明进行操作:
步骤如下:
- 在“项目”菜单上,单击“添加新项”。
- 在“添加新项”对话框中,select 功能区 (XML)。
- 将新功能区的名称更改为MyRibbon,然后单击添加。 MyRibbon.cs 或 MyRibbon.vb 文件在设计器中打开。名为 MyRibbon.xml 的 XML 文件也会添加到您的项目中。
- 在解决方案资源管理器中,右键单击 ThisAddin.cs 或 ThisAddin.vb,然后
然后点击查看代码。
- 将以下代码添加到 ThisAddin class。此代码覆盖 CreateRibbonExtensibilityObject 方法和 returns 功能区 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 Studio生成的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 接口实例?
参见:
"对于使用功能区(可视化设计器)项模板添加到项目的 return 功能区,您不必重写此方法。
默认情况下,此方法 return 是一个 RibbonManager 对象,代表项目中的所有功能区(可视化设计器)项。有关详细信息,请参阅功能区概述。"
我已从 XML 切换到使用可视化设计器,以便可以添加活动面板。
在 VSTO 中,您可以使用可视化设计器创建基本的自定义 Fluent UI,然后将其导出到功能区 XML 文件,之后可以对其进行扩展。不幸的是,并非所有功能都在功能区设计器中可用,因此有时您必须改用原始 XML 标记。在 How to: Export a ribbon from the Ribbon Designer to Ribbon XML 文章中阅读更多相关信息。所以,如果你对设计师没意见,就没有必要修改代码中的任何东西。您必须选择一种或另一种自定义 Fluent 的方式 UI。
我正在构建一个 VSTO 应用程序 (WinForms) 并按照以下位置的说明进行操作:
步骤如下:
- 在“项目”菜单上,单击“添加新项”。
- 在“添加新项”对话框中,select 功能区 (XML)。
- 将新功能区的名称更改为MyRibbon,然后单击添加。 MyRibbon.cs 或 MyRibbon.vb 文件在设计器中打开。名为 MyRibbon.xml 的 XML 文件也会添加到您的项目中。
- 在解决方案资源管理器中,右键单击 ThisAddin.cs 或 ThisAddin.vb,然后 然后点击查看代码。
- 将以下代码添加到 ThisAddin class。此代码覆盖 CreateRibbonExtensibilityObject 方法和 returns 功能区 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 Studio生成的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 接口实例?
参见:
"对于使用功能区(可视化设计器)项模板添加到项目的 return 功能区,您不必重写此方法。
默认情况下,此方法 return 是一个 RibbonManager 对象,代表项目中的所有功能区(可视化设计器)项。有关详细信息,请参阅功能区概述。"
我已从 XML 切换到使用可视化设计器,以便可以添加活动面板。
在 VSTO 中,您可以使用可视化设计器创建基本的自定义 Fluent UI,然后将其导出到功能区 XML 文件,之后可以对其进行扩展。不幸的是,并非所有功能都在功能区设计器中可用,因此有时您必须改用原始 XML 标记。在 How to: Export a ribbon from the Ribbon Designer to Ribbon XML 文章中阅读更多相关信息。所以,如果你对设计师没意见,就没有必要修改代码中的任何东西。您必须选择一种或另一种自定义 Fluent 的方式 UI。