VSTO:仅在加载文档时启用function区按钮
如何在加载文档时设置Word加载项中的function区按钮,并在没有加载文档时禁用,就像大多数内置按钮一样?
可以将全局标志绑定到按钮的“Enabled”属性,还是比它更复杂? 我知道我可以创建一个定时循环来检查Application.Documents中的更改,但是如果可能的话,我正在寻找“更干净”的东西。
我已经看过禁用自己的Word 2007加载项如果没有文档加载和其他相关的问题。
有几种方法可以解决这个问题。
首先,您可以创建一个公开公开的函数,该函数对按钮的启用状态返回true或false(但是您要确定它),然后定义ribbon xml以指向Enabled属性getter的该函数。 如果您正在处理基于IExtensibility的插件,那么这就是您必须采用的方式。
如果您正在处理VSTO,请在function区设计器中定义function区按钮,并在默认情况下将其设置为DISABLED。
然后,在STARTUP事件期间,挂钩WORD对象,特别是NEWDOCUMENT,DOCUMENTOPEN和WINDOWACTIVATE事件。
在每个事件的事件处理程序代码中,根据触发的事件以及当时激活的文档启用或禁用您的按钮。
请改用DocumentChange事件。 连接将是这样的:
Globals.ThisAddIn.Application.DocumentChange += new EventHandler(OnDocumentChange);
和处理程序
void OnDocumentChange() { this.myButton.Enabled = wordApp.Documents.Count > 0; }
有趣的是,我的VSTO Contrib项目( http://vstocontrib.codeplex.com/documentation )具有一些使function区管理更简单的function。
最干净的方法是使用我的function区工厂,但是如果没有查看按钮状态的视图模型,则需要更新项目以禁用按钮。 事实上,这是一个我没有真正涵盖的场景。
您有一个加载项感兴趣的3个部分,视图(窗口),上下文(文档)和function区。 VSTO Contrib意味着您可以获得每个上下文的视图模型,并且它管理/抽象function区和视图,因此您看起来每个上下文都有一个function区,它会告诉您当前的活动视图(对于显示相同文档方案的多个窗口)。 缺少的部分是如果有一个function区,但没有上下文和视图模型,它应该使该function区控件无效并禁用它。 这应该是一个非常简单的变化,如果你有兴趣给VSTO Contrib的RibbonFactory一个旋转,我可以给我发电子邮件,我可以为你做这个改变。
上述就是C#学习教程:VSTO:仅在加载文档时启用function区按钮分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1021367.html