2011-04-12 72 views
0

我已经为使用Visual Studio 2010和.NET 3.5的Word 2007开发了应用程序级加载项。部分原理是使用如果没有加载文档,则禁用自己的Word 2007加载项

Globals.ThisAddIn.Application.Selection.Range 

来插入文本。

但是,当没有文档加载时,此代码将失败。我可以捕捉到异常情况或以编程方式检测文档是否当前打开,但我认为必须有一种更简单的方法...

当Word 2007打开但没有加载文档时,功能区上的大多数按钮都是禁用(即灰显)。

任何想法如何实现? 插件是否会挂钩到事件中并相应地禁用它们的按钮? 如果是这样,这将是

DocumentBeforeClose 

事件,可这是有风险的,如果字不知何故没有打开的文档? (也就是说,没有文件加载,但事件尚未触发。)

在此先感谢!

UPDATE: OK,这似乎是利用了XML的

getEnabled="MyMethod" 

属性的可能是前进的道路,但这似乎只为功能区上的各个控件,而不是整个工作丝带本身。

回答

0

你基本上回答了你自己的问题。

我可以捕获该异常或 编程检测 文档是否是当前打开的

捕捉异常是有点讨厌,但是会工作。

以编程方式检测是否有加载文档是最佳选择。

而且很简单。

If Globals.ThisAddIn.Application.Documents.Count > 0 then 
     'at least one document is opened 
    end if 

不能比这容易得多。

还有别的东西你试图用功能区上的按钮完成的东西?

+0

嘿,谢谢你的回复。你提供的IF语句当然可以工作,但如果我要在我的功能区上说20个按钮,我必须用IF来启动每个按钮的Click Event处理程序。但是,如果您启动Word本身,然后关闭所有打开的文档,除“开发者”和我自己的文档之外的所有功能区将自动变为灰色。我希望能够模仿这一点...我的功能区或者检测到没有更多的公开文档并禁用自身,或者对告诉它禁用自身的事件作出反应..? TA! – Bridgey 2011-04-15 07:35:04

0

请尝试使用DocumentChange事件(请参阅我的回答this thread)。