2013-11-01 120 views
3

這嚇壞了我,如果這是可能的,我會很樂意幫助。從另一個表格中將選項卡添加到TabControl

我是C#開發人員,但必須在VB.NET中執行此操作。

所以C#答案也被接受。

  • 我有一個窗體上的選項卡控件。這個控件還沒有任何標籤。

  • 當窗體加載時,它會加載一個「開始」頁面。它添加了標籤「tbpStart」並將表單加載到標籤頁「frmStart」。

  • 在這個開始頁面上,我有很多單選按鈕。當我點擊一個單選按鈕時,它應該加載主窗體上的其他選項卡。

問題是如何將標籤添加到另一個窗體的一個窗體的標籤控件?

CODE:

當主窗體加載:

Try 
    'Load the Start Tab 
    Dim start As New frmTabStart 
    AddTabPage("Start", start) 
Catch ex As Exception 
    PMComponentLibrary.PMMessageBox.ShowErrorMessage("Error occurred while trying to load the from.", ex) 
End Try 

主窗體上功能:

Public Sub AddTabPage(tabPageName As String, myForm As System.Windows.Forms.Form) 
    Try 
     myForm.TopLevel = False 
     myForm.Dock = DockStyle.Fill 
     myForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None 

     Dim NewTab As New System.Windows.Forms.TabPage 
     NewTab.Name = "tab" + tabPageName 
     NewTab.Text = tabPageName 
     NewTab.Controls.Add(myForm) 
     tbcMain.TabPages.Add(NewTab) 
     myForm.Show() 
    Catch ex As Exception 
     Throw ex 
    End Try 
End Sub 

當我在一個單選按鈕點擊 「開始表」,它將執行此上a click_event:

If sender Is rdbWIPPostings Then 

    entity = New frmTabEntity() 
    mainForm.AddTabPage("Step 1", entity) 
    Application.DoEvents() 
    dte = New frmTabDate() 
    mainForm.AddTabPage("Step 2", dte) 

    wipSelect = New frmTabWIPSelect() 
    mainForm.AddTabPage("Step 3", wipSelect) 

    finish = New frmTabFinish() 
    mainForm.AddTabPage("Finish", finish) 

End If 

但是這些選項卡沒有被添加到主窗體。 我在做什麼錯?

+0

你從哪兒弄來'這裏mainForm'? –

+0

mainForm是子窗體上父窗體的實例。 –

+0

讓我重新說明我的問題。你是如何設置'mainForm'的?它是否用'this'注入到子表單的構造函數中? –

回答

1

修改構造爲frmTabStart接收的mainForm這樣一個實例:

public frmTabStart(MainForm mainForm) 
{ 
    // store that in a field 
} 

,然後當你需要添加標籤:

_mainForm.AddTabPage(...); 
+0

這是修復...傷心,我沒有嘗試這第一次...謝謝@Neoistheone –

+0

@FrederikMoller,不是一個問題!我很高興我能得到幫助! –

相關問題