title: dynamically create tabcontrol pages, add rich text box, and connect to certain serial port
body: <p>I have a form with a tabcontrol (no tabs by default).  On form load, another form opens asking which switch and how many ports are needed.  Based on how many ports are needed, tab pages are created in the tab control for each port needed.  Once the tab page is created, a richtextbox is added.  in that text box, i need to connect to a specific serial port and output the info into the richtextbox.  the specific serial port changes with the tabpage and is based on what switch was originally selected.  For example, if I pick switch 1, and 3 ports needed, 3 tabs should open and tab 1 should connect to switch1/1(which is actually com35 on my pc), tab 2 should connect to switch1/2(which is com36 on my pc) and so on.  Attached is all my code.</p>
  
  <p>Main Form:</p>
  
  <pre><code>Imports System
  Imports System.IO.Ports
  
  Public Class Main
  
  Public Property t_startForm As Object
  
  Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      t_startForm = GetStartForm()
  
      Dim t_tabList As List(Of Integer) = GetTabs.SetTabs()
      For Each t_tab In t_tabList
          Dim page As New TabPage(String.Format("RCP" &amp; t_startForm.getRCP &amp; " - Port #" &amp; t_tab &amp; ""))
          TabControl1.TabPages.Add(page)
  
          Dim ctrlSiteSpecific As SiteSpecific = New SiteSpecific
          page.Controls.Add(ctrlSiteSpecific)
          ctrlSiteSpecific.Dock = DockStyle.Top
  
          Dim rtbTab As LoggerBox = New LoggerBox
          page.Controls.Add(rtbTab)
          rtbTab.Dock = DockStyle.Bottom
          rtbTab.Name = "rtbRCP" &amp; t_startForm.GetRCP &amp; ""
  
          'THIS IS WHERE I WANT IT TO CONNECT TO A SERIAL PORT'
      Next
  End Sub
  
  Function GetStartForm() As Object
      Dim t_startForm As Start = New Start
      t_startForm.ShowDialog()
  
      Return t_startForm
  End Function
  
  End Class
  </code></pre>
  
  <p>Start Form</p>
  
  <pre><code>Public Class Start
  
  Public Function GetRCP() As Integer
      If cbRCP.SelectedItem = Nothing Then Return Nothing
      Return cbRCP.SelectedItem
  End Function
  
  Private Sub cbRCP_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbRCP.SelectedIndexChanged
      Dim t_rcp As Integer = cbRCP.SelectedItem
  End Sub
  
  Public Function GetPorts() As Integer
      If cbPorts.SelectedItem = Nothing Then Return Nothing
      Return cbPorts.SelectedItem
  End Function
  
  Private Sub cbPorts_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbPorts.SelectedIndexChanged
      Dim t_Ports As Integer = cbPorts.SelectedItem
  End Sub
  
  Private Sub Submit_Click(sender As Object, e As EventArgs) Handles Submit.Click
      Me.Close()
  End Sub
  
  Private Sub Cancel_Click(sender As Object, e As EventArgs) Handles Cancel.Click
      Application.Exit()
  End Sub
  End Class
  
  Imports System.IO.Ports
  </code></pre>
  
  <p>Get Tabs Class</p>
  
  <pre><code>Public Class GetTabs
  
  Public Shared Function SetTabs() As List(Of Integer)
      Dim t_tabs As New List(Of Integer)
  
      Select Case Main.t_startForm.GetPorts()
          Case 1
              With t_tabs
                  .Add(1)
              End With
          Case 2
              With t_tabs
                  .Add(1)
                  .Add(2)
              End With
          Case 3
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
              End With
          Case 4
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
              End With
          Case 5
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
              End With
          Case 6
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
              End With
          Case 7
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
              End With
          Case 8
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
              End With
          Case 9
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
              End With
          Case 10
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
              End With
          Case 11
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
              End With
          Case 12
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
              End With
          Case 13
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
              End With
          Case 14
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
              End With
          Case 15
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
              End With
          Case 16
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
              End With
          Case 17
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
              End With
          Case 18
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
              End With
          Case 19
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
              End With
          Case 20
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
                  .Add(20)
              End With
          Case 21
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
                  .Add(20)
                  .Add(21)
              End With
          Case 22
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
                  .Add(20)
                  .Add(21)
                  .Add(22)
              End With
          Case 23
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
                  .Add(20)
                  .Add(21)
                  .Add(22)
                  .Add(23)
              End With
          Case 24
              With t_tabs
                  .Add(1)
                  .Add(2)
                  .Add(3)
                  .Add(4)
                  .Add(5)
                  .Add(6)
                  .Add(7)
                  .Add(8)
                  .Add(9)
                  .Add(10)
                  .Add(11)
                  .Add(12)
                  .Add(13)
                  .Add(14)
                  .Add(15)
                  .Add(16)
                  .Add(17)
                  .Add(18)
                  .Add(19)
                  .Add(20)
                  .Add(21)
                  .Add(22)
                  .Add(23)
                  .Add(24)
              End With
      End Select
  
      Return t_tabs
  End Function
  
  End Class
  </code></pre>
  
  <p>And what I'm attempting to use to build my list of serial ports</p>
  
  <pre><code>Imports System
  Imports System.ComponentModel
  Imports System.Threading
  Imports System.IO.Ports
  
  Public Class GetPorts
  
  #Region "RCP01"
  Public Shared Function GetRCP1Ports() As List(Of IO.Ports.SerialPort)
      Dim t_RCP1 As New List(Of IO.Ports.SerialPort)
  
      With t_RCP1
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
          .Add(New IO.Ports.SerialPort)
      End With
  
      If Main.t_startForm.getRCP = 1 Then
          t_RCP1(1).PortName = "COM35"
          t_RCP1(2).PortName = "COM36"
          t_RCP1(3).PortName = "COM37"
          t_RCP1(4).PortName = "COM38"
          t_RCP1(5).PortName = "COM39"
          t_RCP1(6).PortName = "COM40"
          t_RCP1(7).PortName = "COM41"
          t_RCP1(8).PortName = "COM42"
          t_RCP1(9).PortName = "COM43"
          t_RCP1(10).PortName = "COM44"
          t_RCP1(11).PortName = "COM45"
          t_RCP1(12).PortName = "COM46"
          t_RCP1(13).PortName = "COM47"
          t_RCP1(14).PortName = "COM48"
          t_RCP1(15).PortName = "COM49"
          t_RCP1(16).PortName = "COM50"
          t_RCP1(17).PortName = "COM51"
          t_RCP1(18).PortName = "COM52"
          t_RCP1(19).PortName = "COM53"
          t_RCP1(20).PortName = "COM54"
          t_RCP1(21).PortName = "COM55"
          t_RCP1(22).PortName = "COM56"
          t_RCP1(23).PortName = "COM57"
          t_RCP1(24).PortName = "COM58"
      End If
  
      Return t_RCP1
  End Function
  #End Region
  End Class
  </code></pre>
  
  <p>How can I set each newly created tab page to read which switch and port number to assign the corresponding serial port to open comms with?</p>