TabStrip控件的功能與筆記本的分頁(yè)簽或文件夾上的標(biāo)簽差不多。使用TabStrip控件,就能夠?qū)?yīng)用程序中的窗口或?qū)υ捒虻耐粎^(qū)域定義為多頁(yè)。
控件由 Tabs集合中的一個(gè)或多個(gè) Tab對(duì)象構(gòu)成。無論在設(shè)計(jì)時(shí)還是運(yùn)行時(shí),都能夠通過設(shè)置屬性來影響Tab對(duì)象的外觀;在運(yùn)行時(shí),還能夠通過調(diào)用一些方法來添加和刪除 Tab對(duì)象。
為標(biāo)識(shí)選項(xiàng)卡的功能,可以將 ImageList控件中的圖象與 Tab對(duì)象聯(lián)系起來。首先,必須將 ImageList控件與TabStrip控件相關(guān)聯(lián),這既可以在設(shè)計(jì)時(shí)完成,也可以在運(yùn)行時(shí)完成。
在設(shè)計(jì)時(shí)將 ImageList控件與 TabStrip控件相關(guān)聯(lián):
Private Sub Form_Load()'TabStrip
控件名為“tabRTF
”,'ImageList
控件名為“imlRTF
”。tabRTF.ImageList = imlRTF
End Sub
在設(shè)計(jì)時(shí)和運(yùn)行時(shí)均可創(chuàng)建 Tab對(duì)象。在設(shè)計(jì)時(shí)創(chuàng)建 Tab對(duì)象,需要使用“屬性頁(yè)”對(duì)話框。
在設(shè)計(jì)時(shí)創(chuàng)建 Tab對(duì)象
圖 2.36 “TabStrip屬性頁(yè)”
要在運(yùn)行時(shí)創(chuàng)建 Tab對(duì)象,需要對(duì) Tab對(duì)象使用 Add方法。
注意 在缺省情況下,預(yù)先已經(jīng)創(chuàng)建了一個(gè) Tab對(duì)象。
在運(yùn)行時(shí)創(chuàng)建 Tab對(duì)象的集合
下面的代碼用 Form對(duì)象的Load事件創(chuàng)建了兩個(gè) Tab對(duì)象,然后設(shè)置了新 Tab對(duì)象的Caption、Image和Key屬性。
Private Sub Form_Load()'TabStrip
控件被命名為“tabData
”。'
聲明變量,然后用帶Add
方法的Set
'
語句創(chuàng)建新的Tab
對(duì)象,'
然后將對(duì)象變量設(shè)置為新的Tab
。'
并用它設(shè)置屬性。Dim tabX As Tab
'Tab 1: Find
文本。Set tabX = tabData.Tabs.Add()
tabX.Key = "find"
tabX.Caption = "Find"
tabX.Image = "Find" '
假定存在該圖象。'Tab 2:
繪畫對(duì)象。Set tabX= tabData.Panels.Add()
tabX.Key = "draw"
tabX.Caption = "Draw"
tabX.Image = "draw" '
假定存在該圖象End Sub
提示 如果直接用 Add方法,而不用對(duì)象變量來設(shè)置屬性,效率會(huì)更高。在這種情況下,上述代碼可以改寫為:
tabData.Tabs.Add , "find", "Find", "find"
tabData.Tabs.Add , "draw", "Draw", "draw"
TabStrip控件通常用來創(chuàng)建選項(xiàng)卡式對(duì)話框。該對(duì)話框每頁(yè)由選項(xiàng)卡和客戶區(qū)構(gòu)成,如下圖所示:
在運(yùn)行時(shí),如果用戶單擊選項(xiàng)卡,則必須對(duì)客戶區(qū)進(jìn)行編程,用一組不同的容器控件重新配置客戶區(qū)(在下面的“管理 Tabs和容器控件”中討論)。
在設(shè)計(jì)時(shí),可以在窗體中繪制容器控件,例如 PictureBox 或 Frame控件。如果使用 Frame控件,則可以在運(yùn)行時(shí)將其BorderStyle屬性設(shè)為不可見的。通過復(fù)制并粘貼同一個(gè)控件,來創(chuàng)建一組控件;需要為每個(gè) Tab對(duì)象創(chuàng)建一個(gè)控件。
在每個(gè)容器控件上,繪制應(yīng)出現(xiàn)在選項(xiàng)卡中的控件。窗體看起來可能類似于下面的圖 2.37:
圖 2.37 在設(shè)計(jì)時(shí)具有兩個(gè) PictureBox控件的TabStrip
在創(chuàng)建了容器控件之后,需要用另外一種技術(shù)將它們放置在 TabStrip控件的客戶區(qū):使用 Move方法,并帶上 Tabstrip的ClientLeft、ClientTop、ClientWidth和ClientHeight屬性,如下所示:
Private Sub Form_Load()'TabStrip
控件名為“tabRTF
”。'Frame
控件名為“fraTab
”。For i = 0 To fraTab.Count - 1
With fraTab(i)
.Move tabRTF.ClientLeft, _
tabRTF.ClientTop, _
tabRTF.ClientWidth, _
tabRTF.ClientHeight
End With
Next i
End Sub
選項(xiàng)卡式對(duì)話框中可以包含多個(gè) Tab對(duì)象。正如上面看到的,F(xiàn)rame控件(或其它容器控件)應(yīng)與每個(gè)Tab對(duì)象相關(guān)聯(lián)。為了高效地管理眾多的Tab對(duì)象和容器控件,可使用如下策略:
用來將合適的容器顯示在最前面的代碼可能類似于下面的代碼:
Private Sub tabRTF_Click()picRTF(tabRTF.SelectedItem.Index - 1).ZOrder 0End Sub
提示 在設(shè)計(jì)時(shí),可將控件數(shù)組的Index屬性設(shè)置為基于 1 的數(shù)組。因?yàn)?Tabs集合也是基于 1 的集合,所以上述代碼可以改寫如下:
picRTF(TabRTF.SelectedItem.Index).ZOrder 0
詳細(xì)信息 上述策略的示例代碼,請(qǐng)參閱“TabStrip 應(yīng)用實(shí)例:創(chuàng)建選項(xiàng)卡式對(duì)話框”。
Style屬性決定 TabStrip控件的外觀象
筆記本的標(biāo)簽,
還是下壓式按鈕。
下表列出了它們各自的優(yōu)點(diǎn):
樣式 | 用途 |
Tabs | 用 Tabs 樣式可以創(chuàng)建選項(xiàng)卡式對(duì)話框。如果使用該樣式,將繪制出整個(gè)的選項(xiàng)卡式對(duì)話框,包括客戶區(qū)。必須用代碼確定在客戶區(qū)中顯示什么 |
Buttons | 用 Buttons 樣式可以創(chuàng)建工具欄或任務(wù)條,也就是說,不需要客戶區(qū),希望將按鈕作為界面元素?;蛘?,有時(shí)候不需要事先繪制的客戶區(qū),則可設(shè)置為 Buttons 樣式。 |
TabStrip控件的另一特性是 MultiRow屬性。如果將該屬性設(shè)置為 True,那么大量的Tab對(duì)象就能夠分多行顯示,如下所示:
如果 MultiRow屬性被設(shè)置為 False,一組選項(xiàng)卡只能出現(xiàn)在同一行中,這時(shí)在最右端會(huì)出現(xiàn)一對(duì)滾動(dòng)按鈕:
TabWidthStyle屬性決定每行的外觀。并且,如果 TabWidthStyle 設(shè)置為 Fixed,則還可以用TabFixedHeight和TabFixedWidth屬性為 TabStrip控件中的所有選項(xiàng)卡設(shè)置相同的高度和寬度。
聯(lián)系客服