C# 从其他窗体向TabControl添加选项卡

C# 从其他窗体向TabControl添加选项卡,c#,vb.net,forms,tabs,C#,Vb.net,Forms,Tabs,这让我很害怕,如果可能的话,我会非常感谢你的帮助 我是一名C#开发人员,但必须在VB.NET中完成这项工作 所以C#答案也被接受 我在表单上有一个选项卡控件。此控件中还没有任何选项卡 当表单加载时,它将加载一个“开始”页面。它添加选项卡“tbpStart”并将表单加载到选项卡页面“frmStart”上 在这个起始页上,我有许多单选按钮。当我点击一个单选按钮时,它会加载主窗体上的其他选项卡 问题是如何从另一个窗体向一个窗体的选项卡控件添加选项卡 代码: 加载主窗体时: Try 'Loa

这让我很害怕,如果可能的话,我会非常感谢你的帮助

我是一名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
当我点击“开始表单”上的一个单选按钮时,它会在点击事件中执行此操作:

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
但是选项卡不会添加到主窗体中。
我做错了什么?

修改
frmdabstart
的构造函数以接收
mainForm
的实例,如下所示:

public frmTabStart(MainForm mainForm)
{
    // store that in a field
}
然后,当您需要添加选项卡时:

_mainForm.AddTabPage(...);

您从哪里获得的
mainForm
?mainForm是子表单上父表单的实例。让我重新表述我的问题。您如何设置
mainForm
?是否使用
this
将其注入子窗体的构造函数?是否将mainForm作为byRef传递给Startform构造函数?或者你是从另一个地方来的。我猜主窗体引用与您在屏幕上看到的引用不同。问题不在主窗体上。表格如图所示。在Load_事件中,它调用我的第一个代码块。MainForm还包含第二个代码块,它是一个void函数(Sub)。这将在加载时添加选项卡,并将启动表单添加到新选项卡。这很有效。问题出现在作为控件添加到选项卡页的窗体上。。。从这个子表单我想添加更多的标签到主表单。这是修复。。。可悲的是我没有先尝试这个。。。多谢各位@Neoistheone@FrederikMoller,没问题!我很高兴能帮上忙!