我有自定义功能区选项卡,我希望在给定事件时显示或隐藏其中一些选项卡。但我想单独显示/隐藏它们,因此标签不应相互依赖或类似。
我一直在尝试此documentation.和this one中的示例,但没有成功。
这是标签的功能区XML:
<tab id="t1" label="CustomTab" getVisible="GetVisible" tag="xtab">
<!-- some other elements -->
</tab>
<tab id="t2" label="CustomTab_2" getVisible="GetVisible" tag="xtab_2">
<!-- some other elements -->
</tab>
和VB代码:
Private isVisible As Boolean = False
Public Sub GetVisible(control As Office.IRibbonControl, ByRef returnedVal As Boolean)
returnedVal = isVisible
End Sub
Private Sub RefreshRibbon(Tag As String)
ribbon.Invalidate()
End Sub
Public Sub show_xtab(ByVal control As Office.IRibbonControl)
isVisible = True
Call RefreshRibbon(Tag:="xtab")
End Sub
Public Sub hide_xtab(ByVal control As Office.IRibbonControl)
isVisible = False
Call RefreshRibbon(Tag:="xtab")
End Sub
在这里,我只尝试其中一个,至少让那个工作(然后我将负责动态传递Tag属性)。但这不起作用。
但是,如果我将GetVisible
方法更改为以下内容:
Public Function GetVisible(control As Office.IRibbonControl)
Return isVisible
End Function
它会起作用,但两个标签同时出现。我想分开控制它们。
有任何建议或教程吗?
更新:尝试了一些来自评论建议的解决方案
XML仍然是一样的。 VB代码:
Public MyTag as String
Sub GetVisible(control As Office.IRibbonControl, ByRef visible As Boolean)
If control.Tag Like MyTag Then
visible = True
Else
visible = False
End If
End Sub
Private Sub RefreshRibbon(Tag As String)
MyTag = Tag
ribbon.Invalidate()
End Sub
Public Sub show_xtab(ByVal control As Office.IRibbonControl)
Call RefreshRibbon(Tag:="xtab")
End Sub
Public Sub show_xtab_2(ByVal control As Office.IRibbonControl)
Call RefreshRibbon(Tag:="xtab_2")
End Sub
但仍未成功......
答案 0 :(得分:1)
好吧,它看起来很愚蠢,我不知道它为什么会这样,但解决方案如下 - 我刚刚将GetVisible
从Sub
更改为Function
并删除了visible
参数,所以我直接返回True
或False
,如下所示:
Public Function GetVisible(control As Office.IRibbonControl)
If control.Tag Like MyTag Then
Return True
Else
Return False
End If
End Function
答案 1 :(得分:0)
正确的回调签名过程类型是 Sub,如果您从 GetVisible 回调签名中删除“As Boolean”,它会按预期工作。
此处签名:https://en.site.lt