我有我的自定义带标签,我想显示或隐藏他们中的一些在给定的事件。但是我想单独显示/隐藏它们,这样标签就不应该相互依赖或者类似的东西了。
这是选项卡的带状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在这里,我只试着使用其中的一个,至少让它工作(然后我将负责动态地传递标记属性)。但这行不通。
但是,如果我将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但还是没有成功..。
发布于 2015-06-02 10:01:18
好吧,这看起来很愚蠢,我不知道为什么会这样,但是解决方案如下--我只是将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发布于 2020-12-18 18:04:37
正确的回调签名过程类型是Sub,如果从GetVisible回调签名中删除"As Boolean“,它将按预期工作。
https://stackoverflow.com/questions/30590602
复制相似问题