這篇要介紹的是如何抽換表單介面與實現精靈介面,順便介紹自己試寫的TabControlEx控制項,雖說是TabControl的加強版控制項,但其實也只比傳統的TabControl控制項多一個ShowPageOnly屬性。

抽換表單介面

舉個例子來說,假設今天需要撰寫個可以替換頁面的程式,當按下Button1時程式右側會切到對應畫面(如下圖)。

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

當按下Button2時則顯示另一個畫面。

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

在以往,這樣的程式是需要在程式內部存放各頁面物件的參考(可搭配使用使用者控制項),並依使用者動作抽換頁面。這樣的方法不僅在設計介面無法所見即所得,撰寫上也十分的不便。

程式碼範例如下:

Dim tabs() As Control = New Control() {New DataGridView, New MonthCalendar}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RemoveTabs()
tabs(0).Parent = Me.SplitContainer1.Panel2
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RemoveTabs()
tabs(1).Parent = Me.SplitContainer1.Panel2
End Sub

Private Sub RemoveTabs()
For Each c As Control In tabs
c.Parent = Nothing
Next
End Sub

而若是使用TabControlEx的話,在設計上就跟使用一般的TabControl一樣。

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

表單設完後,變更ShowPageOnly屬性為True,TabControl上方的分頁標籤就會消失。

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

在表單切換上也是跟TabControl一樣,用SelectedIndex之類的屬性或方法就可以了。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.TabControlEx1.SelectedIndex = 0
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.TabControlEx1.SelectedIndex = 1
End Sub

TabControlEx實作的概念很簡單,其實只是把當前TabControl頁面上的控制項,全部移到蓋在TabControl上的Panel,達到無分頁標籤的假象而已。

精靈介面

了解了TabControlEx的新增的唯一功能後 ,有感覺的人應該可以想到其它的應用,在此順便介紹一種另外的應用。就是其實它也可以做到精靈介面,只需少少幾個步驟:

Step1.在各分頁加入精靈介面的背景與元件

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

Step2.加上切換頁面的程式碼

只需透過SelectedIndex之類的屬性或方法就可以了。

Step3.把ShowPageOnly屬性設為False

[VB.NET]Swap Form UIs and Build Wizard Interfaces Quickly with the TabControlEx Control

注意事項

雖然上述例子都是用屬性框直接把ShowPageOnly直接設為True,但在使用上建議在Form.Load事件用程式碼改屬性值,因為控制項仍有小Bug。

Download

TabControlEx.zip