我现在盯着我的代码几个小时,我不明白发生了什么。我根据另一个表单中的文本框值创建了一个包含多个复选框和标签的表单。
这是代码:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim lb As Label
Dim cb1 As CheckBox
Dim cb As CheckBox
Dim i As Integer
Dim j As Integer
For i = 1 To CInt(Aantal.Text) - 1
indivwoningen.Width = indivwoningen.Size.Width + 21
indivwoningen.Button1.Location = New Point(indivwoningen.Button1.Location.X + 21, indivwoningen.Button1.Location.Y)
lb = New Label
indivwoningen.Controls.Add(lb)
lb.Text = i + 1
lb.Font = indivwoningen.Label23.Font
lb.Location = New Point(indivwoningen.Label23.Location.X + 21 * i, indivwoningen.Label23.Location.Y)
For j = 1 To 18
cb1 = New CheckBox
indivwoningen.Controls.Add(cb1)
cb = indivwoningen.Controls.Find("CheckBox" & j & "00", False)(0)
cb1.Location = New Point(cb.Location.X + 21 * i, cb.Location.Y)
cb1.Width = cb.Width
cb1.Text = cb.Text
If i < 10 Then
cb1.Name = "CheckBox" & j & "0" & i
Else
cb1.Name = "CheckBox" & j & i
End If
Next
Next
indivwoningen.Show()
End Sub
创建的表单有两个缺陷:
我不明白发生了什么。有人能帮助我吗?
编辑:这是我创建额外控件之前和之后的图片
答案 0 :(得分:2)
为标签设置Autosize
属性为True,并将复选框的Height
设置为与引用复选框相同的高度
For i = 1 To CInt(Aantal.Text) - 1
....
lb = New Label
indivwoningen.Controls.Add(lb)
lb.Text = i + 1
lb.Font = indivwoningen.Label23.Font
lb.Autosize = True
lb.Location = New Point(indivwoningen.Label23.Location.X + 21 * i, indivwoningen.Label23.Location.Y)
For j = 1 To 18
cb1 = New CheckBox
indivwoningen.Controls.Add(cb1)
cb = indivwoningen.Controls.Find("CheckBox" & j & "00", False)(0)
cb1.Location = New Point(cb.Location.X + 21 * i, cb.Location.Y)
cb1.Width = cb.Width
cb1.Height = cb.Height
cb1.Text = cb.Text
If i < 10 Then
cb1.Name = "CheckBox" & j & "0" & i
Else
cb1.Name = "CheckBox" & j & i
End If
Next
Next
好吧,对于复选框,解释似乎很容易。默认情况下,新复选框的高度为24像素,而在窗体上绘制的高度为较小的高度。因此,因为检查方块位于复选框高度的中心,所以它似乎与引用复选框不对齐。
对于标签,问题属于同一类型。如果不设置Autosize
,则会创建标签,默认大小为100x23像素。这意味着标签上带有文字&#34; 2&#34;扩展其大小以覆盖标签的位置,包括文本&#34; 3&#34;,&#34; 4&#34;,&#34; 5&#34;,&#34; 6&#34;,而带有文字的标签&#34; 3&#34;用文字&#34; 7&#34;覆盖标签。等等。
在任何情况下,设置AutoSize
似乎都是默认行为,同样也在Form.Designer.vb
文件中,按照您的设计时间说明创建控件。
您也可以尝试将动态创建的标签的大小设置为与参考标签相同的大小,效果是相同的。