winforms 如何从Microsoft RibbonFactory创建的RibbonToggleButton扩展或派生?

laawzig2  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(98)

在这种情况下,如何从RibbonToggleButton扩展/派生?
我有一个Microsoft Word VSTO加载项。我的目标是创建一个“自定义”类MyRibbonToggleButton,它扩展或派生自Microsoft.Office.Tools.Ribbon.RibbonToggleButton。我想扩展/派生,因为至少有一个自定义属性,我想扩展RibbonToggleButton类。
我的方法是观察Microsoft.Office.Tools.Ribbon.RibbonToggleButton是如何创建的,然后从我所看到的派生MyRibbonToggleButton类。

1.我创建了一个新的Word VSTO项目

2.新增功能区

3.设计Ribbon,增加RibbonToggleButton

当我检查设计器时,我可以看到RibbonToggleButton对象是通过调用功能区的Factory.CreateRibbonToggleButton()来示例化的。

由于返回的对象类型是Microsoft.Office.Tools.Ribbon.RibbonToggleButton,我创建了一个自定义类并尝试从RibbonToggleButton派生。

这是当我意识到RibbonToggleButton是一个接口。因此,我的自定义类有大约30个未定义的属性、方法、事件等。我不想写所有这些背后的代码。相反,我想利用Microsoft在基本RibbonToggleButton类中提供的属性、方法和事件,并且我想添加至少一个自定义属性。
现在我有麻烦了,因为我很难理解一般的接口,更不用说如何从一个接口扩展/派生。我很困惑,因为我知道Factory.CreateRibbonToggleButton()在运行时必须返回一个具体的RibbonToggleButton对象。同样:我想利用Microsoft在基本RibbonToggleButton类中提供的属性、方法和事件,并且我想添加至少一个自定义属性。
在这种情况下,如何从RibbonToggleButton扩展/派生?

yb3bgrhw

yb3bgrhw1#

你不能这样做,我不知道为什么你甚至需要它。如果可以的话,我也会避免使用功能区设计器--只需从代码中返回功能区XML。
每个功能区控件都有一个id(在功能区XML中定义)。如果需要使自定义控件与功能区控件保持同步,请刷新功能区(通过调用IRibbonUI.Invalidate或IRibbonUI. InvalidateControl。这将导致功能区触发控件上的自定义回调(您需要在功能区XML中指定它们),例如getImage、getText等。然后,您可以根据需要返回更新的信息。

相关问题