3

这把我吓坏了,如果可能的话,我会很高兴得到帮助。

我是一名 C# 开发人员,但必须在 VB.NET 中执行此操作。

因此也接受了 C# 答案。

  • 我在表单上有一个选项卡控件。此控件中还没有任何选项卡。

  • 当表单加载时,它会加载一个“开始”页面。它添加选项卡“tbpStart”并将表单加载到选项卡页面“frmStart”。

  • 在这个起始页上,我有很多单选按钮。当我单击一个单选按钮时,它应该在主窗体上加载其他选项卡。

问题是如何从另一个表单向一个表单的选项卡控件添加选项卡?

代码:

当主窗体加载时:

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

当我单击“开始表单”上的一个单选按钮时,它会在 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

但是选项卡不会添加到主窗体中。我究竟做错了什么?

4

1 回答 1

1

修改构造函数frmTabStart以接收这样的实例mainForm

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

然后当您需要添加选项卡时:

_mainForm.AddTabPage(...);
于 2013-11-01T12:09:13.790 回答