2013-03-20 84 views
3

我有一個包含tabcontrol的表單,我想根據以前表單上的用戶輸入進行修改。我創建了一個名爲「TabControl」的tabcontrol(我知道創意),並試圖爲數組「tabNames()」的每個值添加一個製表符。當我調試程序時,我將值輸入到第一個窗體的數組中,當第二個窗體加載時,我的tabcontrol中沒有任何東西。有什麼想法嗎?以編程方式在TabControl中創建選項卡

Public Sub frmContent_Load(ByVal sender As Object, ByVal e As EventArgs) 
    lblTitle.Text = frmiFormCreator.txtTitle.Text 
    For i As Integer = 0 To frmiFormCreator.numberOfTabs 
    Dim tabPage(frmiFormCreator.numberOfTabs) As TabPage 
    tabPage(i).Text = frmiFormCreator.tabNames(i) 
    TabControl.TabPages.Add(tabPage(i)) 
    Next 
End Sub 

回答

5

嘗試創建的TabPage對象:

For i As Integer = 0 To frmiFormCreator.numberOfTabs 
    Dim newPage As New TabPage() 
    newPage.Text = frmiFormCreator.tabNames(i) 
    TabControl.TabPages.Add(newPage) 
Next 

而且,你的代碼看起來可能創建一個額外的標籤。也許你想這樣的:

For i As Integer = 0 To frmiFormCreator.numberOfTabs - 1 
+1

非常感謝您的幫助。這是我遇到的問題之一。事實證明,我還沒有正式宣佈我的表單加載功能,甚至沒有開火。至於numberOfTabs - 1,我實際上已經在numberOfTabs變量的聲明中減去1。我很樂意提出這個答案,以及Nianios的回答,但不幸的是,我是該網站的全新品牌,並且沒有所需的聲譽。感謝你們兩位的幫助! – nherrmann 2013-03-20 17:07:50

+0

好吧,我現在有足夠的聲望來讚揚,所以我回來並且對兩個建議都這樣做,因爲它們都有幫助。多謝你們! – nherrmann 2013-04-16 16:12:53

+0

@nherrmann不是訂閱表單事件,而是重寫'OnLoad'方法通常更容易。只要確保讓'MyBase.OnLoad(e)'行做它的事情。 – LarsTech 2013-04-16 16:17:12

1

嘗試

Public Sub frmContent_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    lblTitle.Text = frmiFormCreator.txtTitle.Text 
    For i As Integer = 0 To frmiFormCreator.numberOfTabs 
     Dim tabPage As New TabPage(frmiFormCreator.tabNames(i)) 
     TabControl.TabPages.Add(tabPage) 
    Next 
End Sub 
相關問題