Word实例教程:管理侧栏

发布: 2009-2-10 19:20  作者: 网络转载  查看: 1066次 共有0条评论

实例教程:管理侧栏

  管理侧栏

  我曾不止一次同时查看多个打开的窗口,一不小心关闭其中一个致使其它的都关闭了,然而,这种情况不会出现在使用Word的时候。究其原因,乃Andrew和Robert在他们各自的文章里讲述的,Word和Excel使用了不同的窗口模型。

  还记得我们是怎样把"我的博客"侧边栏添加进Word窗口的吗?我们是在ThisAddIn_Startup() 方法中使用CustomTaskPaneCollection.Add() 方法把它添加进来的:

  

  细心的你可能已经发现,我们并没有在这里为"我的博客"侧边栏指定父窗口,VSTO将会把它添加进当前窗口。如果这用在Excel,由于各个Excel窗口共享同一个"Document Frame Window",那么每个打开的Excel窗口也将共享这个"我的博客"侧边栏。但若这用在Word,情况将大不相同,第一个启动的Word窗口将独享"我的博客"侧边栏,其它的都无福消受了。怎么解决这个问题?

  一种办法就是处理Microsoft.Office.Interop.Word.Application对象的NewDocument和DocumentOpen事件,使用CustomTaskPaneCollection.Add() 方法的重载版本为每个新建或打开的窗口添加"我的博客"侧边栏。当用户关闭窗口时,我们应该销毁与之关联的侧边栏,然而,正如Robert的文章所指出的,Word没有提供DocumentClosed事件,如果我们在DocumentBeforeClose事件的Event Handler里销毁侧边栏,那么当用户取消关闭窗口时,就会发现侧边栏已被莫名其妙地关闭了,这显然是不可接受的。对于这个问题,Robert的方法确实是一个不错的选择。值得提醒的是,如果添加侧边栏的代码只存在于NewDocument和DocumentOpen事件的Event Handler中,那么第一个新建或者打开的窗口都不会有侧边栏,因为这两个事件是在第一个窗口之后才触发的,于是,你需要把代码复制一份放在ThisAddIn_Startup() 方法里面。

相关阅读
大家对 Word实例教程:管理侧栏 的评论