Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms office 每个文档的功能区实例_Ms Office_Vsto_Ribbon - Fatal编程技术网

Ms office 每个文档的功能区实例

Ms office 每个文档的功能区实例,ms-office,vsto,ribbon,Ms Office,Vsto,Ribbon,我使用的是VSTO 3.0,ribbon designer为我提供了一个功能区,它显然是跨文档共享的 因此,如果需要在功能区(或切换按钮)中显示特定于文档的状态(标记为XML的标记的数量),那么所有文档似乎都共享功能区实例 我怎样才能解决这个问题 TIA钩住文档模型中的适当事件(例如,当活动文档发生更改时),并在该事件中使适当的功能区按钮无效(您需要加载的原始功能区xml中的元素id) 然后,当该按钮的刷新状态回调发生时,您可以根据需要更新标题/图像/已启用。您可以使用Application.D

我使用的是VSTO 3.0,ribbon designer为我提供了一个功能区,它显然是跨文档共享的

因此,如果需要在功能区(或切换按钮)中显示特定于文档的状态(标记为XML的标记的数量),那么所有文档似乎都共享功能区实例

我怎样才能解决这个问题
TIA

钩住文档模型中的适当事件(例如,当活动文档发生更改时),并在该事件中使适当的功能区按钮无效(您需要加载的原始功能区xml中的元素id)


然后,当该按钮的刷新状态回调发生时,您可以根据需要更新标题/图像/已启用。

您可以使用Application.DocumentChange事件或Application.WindowActivate事件

第一个被触发,然后您更改当前活动文档,但是在参数中没有关于该文档的信息,因此很难使用,因为您必须弄清楚这一点


后者类似,每次更改窗口时都会触发,但在本例中,它将当前活动文档作为参数传递,因此,如果需要检查任何文档属性的值,则更容易更改功能区。这对我起了作用。

我知道它已经死了6年,但我现在正在经历这种创伤。当您引用“文档模型内”时,您的意思是什么?如果内存可用(已经有一段时间了),则应用程序对象上有一些事件,您可以注册这些事件,以便在活动文档更改时收到通知。这样,您就有机会使功能区按钮无效,从而触发更新以反映新活动文档的适当状态。