代码之家  ›  专栏  ›  技术社区  ›  illuminati_confirmed

在vb.net中向groupbox动态添加标签和其他控件不起作用?

  •  1
  • illuminati_confirmed  · 技术社区  · 7 年前

    出于某种原因,程序只在其中放置了一个标签,而其他标签似乎不可见,即使它们已经创建(我使用了messagebox进行检查)。有人能帮我把它们放进去吗,因为我对编程相当陌生,需要帮助。

    代码:

    'sets up Labels for editing materials
        prgFunctions.loadMat()
        Dim counter As Integer
    
        Dim newMatIDLabel(numMatFile) As Label
        Dim newMatRdb(numMatFile) As RadioButton
        Dim lastPos As Integer
    
        'testing to see if materials load GET RID OF LATER
        '  For counter = 1 To numMatFile
        'ListBox1.Items.Add(materials(counter).matName)
        '  Next
    
        'create the labels with information
        For counter = 1 To numMatFile
            'ID
            newMatIDLabel(counter) = New Label
            newMatIDLabel(counter).Name = "lblMatIDNum" & counter
            newMatIDLabel(counter).Text = materials(counter).matID
            newMatIDLabel(counter).Parent = gbxMaterials
    
    
            ' MsgBox(newMatIDLabel(counter).Name & "  " & newMatIDLabel(counter).Text)
        Next
    
        'create the checkboxes NOW RADIO BUTTONS
        For counter = 1 To numMatFile
            newMatRdb(counter) = New RadioButton
            newMatRdb(counter).Name = "chkMatSelectNum" & counter
            newMatRdb(counter).Text = ""
            newMatRdb(counter).Parent = gbxMaterials
        Next
    
        'matID locations
        lastPos = 10
        For counter = 1 To numMatFile
            'SOMEHOW MOVE IT INTO THE GROUPBOX INSTEAD, as issues arise everywhere
            newMatIDLabel(counter).Location = New Point(7, lastPos + 10)
    
            lastPos = lastPos + 10
        Next
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   F0r3v3r-A-N00b    7 年前

    为什么不只是:

    lastPos = 10
    For counter = 1 To numMatFile
        Dim label As New Label
        label.Name = "chkMatSelectNum" & counter
        label.Text = materials(counter).matID
        label.Location = New Point(7, lastPos)
        label.Visible = True
        gbxMaterials.Controls.Add(label)
        lastPos += label.Height
    Next
    
        2
  •  0
  •   Patrick    7 年前

    根据F0r3v3r-A-N00b的回答:

    标签的高度是23,所以它似乎隐藏了其他标签。

        Dim lastPos As Integer = 20
        For counter As Integer = 1 To numMatFile
            Dim label As New Label
            label.Name = "chkMatSelectNum" & counter
            label.Text = materials(counter).matId
            label.AutoSize = True
            label.Visible = True
            label.Location = New Point(7, lastPos)
            gbxMaterials.Controls.Add(label)
            lastPos += 17
        Next