当前位置: 首页 > 编程语言 > C#

有没有办法在运行时访问功能区(XML)?分享

时间:2023-04-10 15:14:30 C#

有没有办法在运行时访问功能区(XML)?我使用的是Word2007应用程序级加载项。到目前为止,除了将加载项的功能区界面转换为XML之外,我没有遇到任何重大障碍。我必须使用RibbonXML,因为我处理的功能只能通过这种方式完成。问题是,通过切换到RibbonXML,我无法再在运行时通过Globals.Ribbons访问界面。此链接http://msdn.microsoft.com/en-us/library/bb772088.aspx很好地解释了如何访问可视化设计器功能区,但它完全忽略了XML功能区大小写。具体来说,我需要能够访问一些视觉控件,例如标签。我怎样才能做到这一点?Globals.Ribbons是一个VSTO设计器功能,如果你使用RibbonXML那么你就没有这个功能。设计器实际做的是为Office创建功能区xml,然后当office进行回调时,VSTO将为该上下文(文档)引发适当的事件处理程序。由于您使用的是RibbonXML,因此您将完全绕过VSTORibbon设计器支持(我更喜欢这种方式,它速度更快并且您拥有更多控制权)。使用功能区XML,您必须为您的标签注册一个onLoad回调,然后Office将传递一个IRibbonControl,它将成为标签,并且您可以做的事情是有限的。如果要更改文本,则必须注册getText回调,然后使功能区控件无效,这将导致重新评估getText回调。有关您实际尝试实现的目标的更多信息会很方便=)我感觉我的VSTOcontrib项目也会让您的生活更轻松,因为它在使用ribbonxmlRibbonDesigner功能时为您提供了很多好东西。但是让我知道您想做什么,我可以为您提供更多信息。干杯,杰克我在使用RibbonXML时试过这个,但我无法从Globals.Ribbons访问Ribbon1属性。该属性根本不存在。但是,我想出了另一个解决方案,它基本上适用于正确的类型转换相关。在ThisAddIn.cs中:privateMicrosoft.Office.Core.IRibbonExtensibilityribbonObj;protectedoverrideMicrosoft.Office.Core.IRibbonExtensibilityCreateRibbonExtensibilityObject(){ribbonObj=newRibbon1(this);返回丝带对象;}privatevoidThisobAddIn_Startup(EventArgse){//在Ribbon1.cs中调用公共方法TEST()//MyNameSpace是您项目中使用的命名空间,即您的项目名称((MyNameSpace.Ribbon1)ribbonObj).TEST();//调用Ribbon1.cs中的公共变量flag((MyNameSpace.Ribbon1)ribbonObj).flag;你什么时候尝试访问Globals.ribbons?我记得,直到Word的启动阶段接近尾声时,它才被填充。如果您尝试过早访问它,则不会定义颜色渐变。以上是C#学习教程:有没有办法在运行时访问功能区(XML)?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: