繁体   English   中英

如何动态将标签页添加到标签控件并将 label 添加到标签页

[英]How can I add tabpage to tabcontrol dynamically and add label to tabpage

我正在尝试将一些 Tabages 添加到名为“EMER_AUTO_TabContorl”并由 emer_num_textbox 控制的现有 TabControl。

如下图,我应该得到“A组”/“B组”/“C组”,但“C组”/“B组”/“C组”。

在此处输入图像描述

这是我的代码。

Dim group_name As String() = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"} 'my group name
Dim mytabPage As TabPage = New TabPage 
Dim myLabel As Label = New Label
Dim emer_groupNum As Integer 'my input number
Try
        emer_groupNum = Emer_Num_TextBox.Text 
        EMER_AUTO_TabControl.TabPages.Clear() 'Clear my tabControl
Catch           
End Try

For i = 1 To emer_groupNum

   With myLabel
       .Text = "123"
       .Location = New Point(6, pos1_Y)
   End With

   With mytabPage
      .Text = group_name(i - 1) & " Group"         
      .Controls.Add(myLabel)
   End With

   EMER_AUTO_TabControl.TabPages.Add(mytabPage)               
Next

除了 Label 文本“123”不会显示在 TabPages 上。

您每次都在重复使用相同的标签页和 label。 在 for 循环中移动“新建”,如下所示:

Dim group_name As String() = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"} 'my group name
Dim mytabPage As TabPage 
Dim myLabel As Label 
Dim emer_groupNum As Integer 'my input number
Try
        emer_groupNum = Emer_Num_TextBox.Text 
        EMER_AUTO_TabControl.TabPages.Clear() 'Clear my tabControl
Catch           
End Try

For i = 1 To emer_groupNum
   myLabel = New Label
   With myLabel
       .Text = "123"
       .Location = New Point(6, pos1_Y)
   End With

   mytabPage = New TabPage
   With mytabPage
      .Text = group_name(i - 1) & " Group"         
      .Controls.Add(myLabel)
   End With

   EMER_AUTO_TabControl.TabPages.Add(mytabPage)               
Next

编辑

您可能还想更改测试正确的 integer 输入的方式,就像当前运行 For 循环的 Try/Catch 一样。 也许尝试这样的事情:

   If Integer.TryParse(Emer_Num_TextBox.Text, emer_groupNum) Then
        For i = 1 To emer_groupNum
            ' Loop code here
        Next
    Else
        ' Handle incorrect input
    End If

打开选项严格。

如果文本框有一个可以转换为 Integer 的字符串,您应该使用.TryParse 进行测试。

永远不要写一个空的 Catch。 你的代码只会吞下错误,你不会知道出了什么问题。 在这段代码中,go 在正确检查用户输入方面没有任何问题。

我认为您的问题是在循环之外声明您的 label 和标签页。 这只会创建一个 label 和标签页。 在循环的每次迭代中,您更改单个控件的属性并将相同的 this 读取到集合中。 在循环中声明您的控件,您将获得控件的新实例。

Private Sub OPCode()
    Dim group_name As String() = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"} 'my group name
    Dim emer_groupNum As Integer  'my input number
    If Not Integer.TryParse(TextBox1.Text, emer_groupNum) Then
        MessageBox.Show("Please enter a valid number in the box.")
        Exit Sub
    End If
    Dim pos1_Y As Integer = 3
    TabControl1.TabPages.Clear() 'Clear my tabControl
    For i = 1 To emer_groupNum
        Dim mytabPage As TabPage = New TabPage
        Dim myLabel As Label = New Label
        With myLabel
            .Text = "123"
            .Location = New Point(6, pos1_Y)
        End With
        With mytabPage
            .Text = group_name(i - 1) & " Group"
            .Controls.Add(myLabel)
        End With
        TabControl1.TabPages.Add(mytabPage)
    Next
End Sub

您可以在表单加载时构建所有 TabPages 并将它们存储在一个列表中,然后只需从该列表中重新填充 TabControl:

Private Groups As New List(Of TabPage)

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim group_names As String = "ABCDEFGHIJ"
    For i As Integer = 1 To group_names.Length
        Dim mytabPage As New TabPage
        mytabPage.Text = group_names(i - 1) & " Group"
        Groups.Add(mytabPage)

        Dim myLabel As New Label
        With myLabel
            .Text = "123"
            .Location = New Point(6, pos1_Y) ' <-- Not sure if "pos1_Y" changes?
        End With
        mytabPage.Controls.Add(myLabel)
    Next
End Sub

Private Sub Emer_Num_TextBox_TextChanged(sender As Object, e As EventArgs) Handles Emer_Num_TextBox.TextChanged
    Dim i As Integer
    If Integer.TryParse(Emer_Num_TextBox.Text, i) Then
        If i >= 0 AndAlso i <= Groups.Count Then
            EMER_AUTO_TabControl.TabPages.Clear()
            For Each tab As TabPage In Groups.Take(i)
                EMER_AUTO_TabControl.TabPages.Add(tab)
            Next
        End If
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM