事件顺序颠倒 'Ribbon_Load' 和 'ThisAddin_Startup' Word VSTO 加载项。 (从 8201.2025 开始构建)
Order of events reversed 'Ribbon_Load' and 'ThisAddin_Startup' Word VSTO Add-in. (Build 8201.2025 onwards)
从 Build 8201.2025 开始,在 Word 中加载带有功能区的 VSTO 插件时,事件顺序发生了意外更改。
- 使用 Office 版本 16.0.8067.2115 或更早版本。加载插件时,会观察到以下事件顺序(一如既往)。
Ribbon_Load event
ThisAddin_Startup event
- 使用 Office 版本 8201.2025、8201.2064 或 8201.2075 或更高版本时,事件的顺序被颠倒,这是一个意外的重大变化。
ThisAddin_Startup event
Ribbon_Load event
- 我使用可视化设计器功能区创建了一个简单的 VSTO 插件来演示该问题。
>
Public Class Ribbon1
Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load
System.Diagnostics.Debug.Write("Ribbon1_Load event called.")
'Pass the Ribbon to the Addin.
ThisAddIn.MyRibbon = Me
End Sub
End Class
Public Class ThisAddIn
Public Shared Property MyRibbon As Ribbon1 = Nothing
Private Sub ThisAddIn_Startup() Handles Me.Startup
Debug.Write("ThisAddin_Startup Called")
If (MyRibbon Is Nothing) Then
Debug.Write("MyRibbon is nothing - the ribbon was not captured.")
Else
Debug.Write("Ribbon captured successfully.")
End If
End Sub
End Class
16.0.8067.2115 32 位的调试输出
[7772] Ribbon1_Load 事件调用。
[7772] ThisAddin_Startup 调用
[7772] 功能区捕获成功。
16.0.8201.2075 32 位的调试输出
- [13556]ThisAddin_Startup已调用
- [13556] MyRibbon 什么都没有 - 丝带未被捕获。
- [13556] Ribbon1_Load 事件调用
我已将其发布在 Microsoft Support forums 上,但他们已停止响应,并且自从将此版本发布到 Current office 频道后,我需要开发社区的帮助。
有没有人找到成功的解决方法?这种时间的变化导致了我们如何初始化的很多问题。在他们调查此错误之前,Microsoft 支持人员最好提供解决方案或解决方法。
我总是在 ThisAddin_Startup
之前得到 Ribbon_Load
,因为我使用 Ribbon XML。 Ribbon UI allow less controls ... 由于两者都是"entry"点,我建议你在启动时只使用Ribbon1_Load
。或者,如果您使用 Ribbon XML 模型并且您想要第一个入口点,请尝试其构造函数
我不觉得这个问题是一个错误,为了使 Word 更快,许多进程都是异步的。因此,在我看来,ThisAddin_Startup
或 Ribbon1_Load
中的第一个启动可能会意外更改,具体取决于许多因素:系统性能、Word 单独启动、Word 通过文档启动 ...
希望这对某人有所帮助!我们使用以下解决方法成功解决了更改后的办公室负载行为。
在 ThisAddIn_Startup
循环中,直到触发色带加载事件并捕获色带。
While m_oRibbon Is Nothing
If (timeWaited >= MAX_WAIT_TIME) Then
Exit Try
End If
Threading.Thread.Sleep(50)
timeWaited = timeWaited + 50
End While
从 Build 8201.2025 开始,在 Word 中加载带有功能区的 VSTO 插件时,事件顺序发生了意外更改。
- 使用 Office 版本 16.0.8067.2115 或更早版本。加载插件时,会观察到以下事件顺序(一如既往)。
Ribbon_Load event
ThisAddin_Startup event
- 使用 Office 版本 8201.2025、8201.2064 或 8201.2075 或更高版本时,事件的顺序被颠倒,这是一个意外的重大变化。
ThisAddin_Startup event
Ribbon_Load event
- 我使用可视化设计器功能区创建了一个简单的 VSTO 插件来演示该问题。
>
Public Class Ribbon1
Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load
System.Diagnostics.Debug.Write("Ribbon1_Load event called.")
'Pass the Ribbon to the Addin.
ThisAddIn.MyRibbon = Me
End Sub
End Class
Public Class ThisAddIn
Public Shared Property MyRibbon As Ribbon1 = Nothing
Private Sub ThisAddIn_Startup() Handles Me.Startup
Debug.Write("ThisAddin_Startup Called")
If (MyRibbon Is Nothing) Then
Debug.Write("MyRibbon is nothing - the ribbon was not captured.")
Else
Debug.Write("Ribbon captured successfully.")
End If
End Sub
End Class
16.0.8067.2115 32 位的调试输出
[7772] Ribbon1_Load 事件调用。
[7772] ThisAddin_Startup 调用
[7772] 功能区捕获成功。
16.0.8201.2075 32 位的调试输出
- [13556]ThisAddin_Startup已调用
- [13556] MyRibbon 什么都没有 - 丝带未被捕获。
- [13556] Ribbon1_Load 事件调用
我已将其发布在 Microsoft Support forums 上,但他们已停止响应,并且自从将此版本发布到 Current office 频道后,我需要开发社区的帮助。
有没有人找到成功的解决方法?这种时间的变化导致了我们如何初始化的很多问题。在他们调查此错误之前,Microsoft 支持人员最好提供解决方案或解决方法。
我总是在 ThisAddin_Startup
之前得到 Ribbon_Load
,因为我使用 Ribbon XML。 Ribbon UI allow less controls ... 由于两者都是"entry"点,我建议你在启动时只使用Ribbon1_Load
。或者,如果您使用 Ribbon XML 模型并且您想要第一个入口点,请尝试其构造函数
我不觉得这个问题是一个错误,为了使 Word 更快,许多进程都是异步的。因此,在我看来,ThisAddin_Startup
或 Ribbon1_Load
中的第一个启动可能会意外更改,具体取决于许多因素:系统性能、Word 单独启动、Word 通过文档启动 ...
希望这对某人有所帮助!我们使用以下解决方法成功解决了更改后的办公室负载行为。
在 ThisAddIn_Startup
循环中,直到触发色带加载事件并捕获色带。
While m_oRibbon Is Nothing
If (timeWaited >= MAX_WAIT_TIME) Then
Exit Try
End If
Threading.Thread.Sleep(50)
timeWaited = timeWaited + 50
End While