Vb.net 添加到ControlCollection的项不显示

Vb.net 添加到ControlCollection的项不显示,vb.net,Vb.net,我正在尝试使用以下代码向面板添加一些复选框: For t = 0 To taglist.Count - 1 'list(of string) 'new ComboBox Dim cbx As New CheckBox 'some options cbx.ThreeState = True cbx.CheckState = CheckState.Indeterminate cbx.Name

我正在尝试使用以下代码向面板添加一些复选框:

    For t = 0 To taglist.Count - 1  'list(of string)
        'new ComboBox
        Dim cbx As New CheckBox

        'some options
        cbx.ThreeState = True
        cbx.CheckState = CheckState.Indeterminate
        cbx.Name = "cbxTag" & cnt
        cnt += 1
        cbx.Text = taglist.Item(t)
        'cbx.Top = (y + 2) * 10
        'cbx.Left = x * 30 + 10
        cbx.Location = New Point(x * 60 + 5, (y) * 20 + 20)

        'Add it to controls
        SplitContainer2.Panel1.Controls.Add(cbx)

        ' Positioning stuff
        If x * 60 + 65 < SplitContainer2.Panel1.Width Then
            x += 1
        Else
            x = 0
            y += 1
        End If
    Next
使用debug,我可以看到项目被添加到集合中,并且位置似乎正好位于可见位置

问题是:表单上只显示每行的第一项。 编辑:问题似乎与x坐标有关


提前感谢

问题在于复选框的大小。与在设计器中添加的复选框不同,在创建以Dim cbx作为新复选框的复选框时,Autosize属性为FALSE

结果是,它们的大小在80-100之间,看起来彼此重叠,不可见。第一个复选框的背景隐藏了第二个复选框,依此类推

因此,我的问题的解决方案是:

 cbx.AutoSize = True

将项目添加到SplitContainer.Panel时,项目将相应格式化。左上角的逻辑可能是错误的。你能把那部分代码注释掉,看看你的项目是否被添加了?你确定你的列表中有不止一个项目吗?好的,他们是在评论了左上角的部分后添加的。找到。位置-尝试此操作以将项目放置到位。还有其他方法吗?将FlowLayoutPanel添加到splitpContainer.Panel,您要将复选框添加到其中。然后将复选框添加到FlowLayoutPanel.Contros。FlowLayoutPanel将为您定位复选框。谢谢!我不知道他们的事。我还需要学习很多东西: