好的,所有按钮都有GetEnabled
事件,因此当功能区激活/更新时 - 事件被触发! (简单的)。
该事件的回调函数如下所示:
Sub Button_GetEnabled(control As IRibbonControl, ByRef enabled)
'(enabled = true to enable)
enabled = EnableButtons
End Sub
那么让我们开始吧!在具有回调函数的模块中,您需要一个全局(全局回调)布尔值,例如EnableButtons
.
当功能区加载此代码示例时,会触发将标志设置为True
:
Private Sub OnRib_Load(ribbonUI As IRibbonUI)
Set MyRibbonUI = ribbonUI
EnableButtons = True
End Sub
在每个按钮上您都需要回调GetEnabled
上述事件。
之后 - 所有按钮均启用!那么我们在这里能做什么呢?让我们看看您想要的按钮的 OnAction 回调:
Sub Button_Click(control As IRibbonControl)
EnableButtons = False
MyRibbonUI.Invalidate
'do some stuff - buttons disabled
EnableButtons = True
MyRibbonUI.Invalidate
End Sub
So Invalidate
方法“更新”所有控件。你可以尝试InvalidateControl
所需的控制(这是一种比Invalidate
,由于性能),但我认为更优雅的方法是将回调和事件仅放置在您想要的按钮上!
所以,最后,您需要引用功能区、布尔标志和_GetEnabled
events.
更多这里 https://msdn.microsoft.com/en-us/library/office/ff869817.aspx