2015-06-02 74 views
0

我有我的自定義功能區選項卡,我想在給定的事件中顯示或隱藏其中的一些選項卡。但我想單獨顯示/隱藏它們,因此選項卡不應該依賴於彼此或類似的東西。單獨顯示/隱藏不同的自定義選項卡

我一直在嘗試從這個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 

在這裏,我想只是其中之一,使至少一個來工作(然後我會照顧動態傳遞標籤屬性)。但這不起作用。

但是,如果我改變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

你見過[這](http://www.rondebruin.nl/win/s2/win012 .htm)有一個工作簿,你可以下載 –

+0

它和https://msdn.microsoft.com/en-us/library/ee633442%28v=office.11​​%29.aspx中的一樣,而他只提供了XML,沒有VB代碼。 – Syspect

+0

您是否點擊了'下載示例工作簿' –

回答

1

好,似乎很愚蠢的,我不知道爲什麼它的工作原理類似,但解決的辦法如下 - 我剛換GetVisibleSubFunction並刪除了visible說法,所以我直接返回TrueFalse,像這樣:

Public Function GetVisible(control As Office.IRibbonControl) 
    If control.Tag Like MyTag Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 
相關問題