WEB开发网
开发学院软件教学办公软件Word 管理侧栏——Word 2007高级应用(九) 阅读

管理侧栏——Word 2007高级应用(九)

 2008-10-14 20:18:23 来源:WEB开发网   
核心提示:管理侧栏 我曾不止一次同时查看多个打开的Excel窗口,一不小心关闭其中一个致使其它的都关闭了,管理侧栏——Word 2007高级应用(九),然而,这种情况不会出现在使用Word的时候,因为这两个事件是在第一个窗口之后才触发的,于是,究其原因,乃Andrew和Robert在他们各自的文章里讲述的

管理侧栏

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

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

管理侧栏——Word 2007高级应用(九)

细心的你可能已经发现,我们并没有在这里为"我的博客"侧边栏指定父窗口,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() 方法里面。

1 2 3 4  下一页

Tags:管理 Word 高级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接