c# - 从另一个窗体向 TabControl 添加选项卡

标签 c# vb.net forms tabs

这让我很害怕,如果可能的话,我很乐意提供帮助。

我是一名 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

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

最佳答案

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

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

然后当您需要添加标签时:

_mainForm.AddTabPage(...);

关于c# - 从另一个窗体向 TabControl 添加选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726416/

相关文章:

php - jquery、iframe 和表单 天哪!

c# - 创建泛型类型的实例时无法提供参数

c# - ASP.NET MVC : seperatation of concern for normal/admin user

c# - 抛出 Win32Exception

vb.net - Environment.GetFolderPath(Environment.SpecialFolder.Personal) 出现意外目录

.net - 如何以编程方式检查用户是否可以访问 SharePoint 网站?

vb.net - 如何编写 VB.Net Lambda 表达式

.net - PowerShell .NET 文本框中的粗体文本

c# - 获取EF6中存储过程的返回值

javascript - 如何正确地将动态输入字段传递到另一个页面进行显示?