Vb.net 动态创建选项卡控件页,添加富文本框,并连接到特定的串行端口

Vb.net 动态创建选项卡控件页,添加富文本框,并连接到特定的串行端口,vb.net,Vb.net,我有一个带有tabcontrol的表单(默认情况下没有选项卡)。在表单加载时,另一个表单打开,询问需要哪个交换机和多少端口。根据需要的端口数量,在选项卡控件中为每个需要的端口创建选项卡页。创建选项卡页面后,将添加richtextbox。在该文本框中,我需要连接到特定的串行端口,并将信息输出到richtextbox。特定的串行端口随选项卡页的变化而变化,并基于最初选择的交换机。例如,如果我选择了交换机1,并且需要3个端口,则3个选项卡应打开,选项卡1应连接到交换机1/1(在我的电脑上实际上是com

我有一个带有tabcontrol的表单(默认情况下没有选项卡)。在表单加载时,另一个表单打开,询问需要哪个交换机和多少端口。根据需要的端口数量,在选项卡控件中为每个需要的端口创建选项卡页。创建选项卡页面后,将添加richtextbox。在该文本框中,我需要连接到特定的串行端口,并将信息输出到richtextbox。特定的串行端口随选项卡页的变化而变化,并基于最初选择的交换机。例如,如果我选择了交换机1,并且需要3个端口,则3个选项卡应打开,选项卡1应连接到交换机1/1(在我的电脑上实际上是com35),选项卡2应连接到交换机1/2(在我的电脑上是com36),依此类推。附件是我所有的代码

主要形式:

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" & t_startForm.getRCP & " - Port #" & t_tab & ""))
        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" & t_startForm.GetRCP & ""

        '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
起始形式

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
获取标签类

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
以及我试图使用什么来构建我的串行端口列表

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

如何设置每个新创建的选项卡页,以读取要分配相应串行端口以打开通信的交换机和端口号?

这是一个不好的设计(我的意见),它需要解决一些问题。。。为什么要这样设计?您不需要在这些选项卡页面中放置任何内容,而是创建它们来容纳2个控件。如果可以的话,为什么不以一种形式处理呢?好的,那么我应该如何设计它呢?我试图使每个选项卡都成为自己的网络设备配置环境,它们需要使用不同的串行端口来实现这一点。每个选项卡页面上的文本框将填充im连接到的网络设备的输出。