簡體   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