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将为您定位复选框。谢谢!我不知道他们的事。我还需要学习很多东西: