为什么动态创建的标签显示不正确?

时间:2015-05-09 18:14:21

标签: vb.net winforms

好吧,出于某种原因,这不起作用,但我之前已经完成了。

我正在创建一个刽子手应用程序,我的动态标签根本不会显示。

我写了这段代码:

Dim xLabel As Integer = lblPosition.Location.X
Dim yLabel As Integer = lblPosition.Location.Y
For i As Integer = 0 To film.Length - 1
    Dim label1 As New Label
    xLabel += 20
    label1.Location = New Point(xLabel, yLabel)
    label1.Text = "_"
    label1.Font = New Drawing.Font("Century Gothic", _
                  16, _
                  FontStyle.Bold)
    label1.ForeColor() = Color.White
    label1.Name = "lblLetter" & i
    Me.Controls.Add(label1)
Next

因此,为film字符串中的每个字符创建一个标签,并以下划线作为文本。 lblPosition是我基于其他标签位置的标签。

标签未显示。我可以将下划线改为长的,它只会显示最后一个字符。

我的表格当然足够广泛,我还没有名为label1的标签。 它也可以编译。

编辑:如果我添加边框,这就是标签的样子,但仍然没有文字。

enter image description here

编辑2:字体大小与第一个下划线相同,如果我使用字母,我得到这个(字体大小也减少)

enter image description here

1 个答案:

答案 0 :(得分:0)

label1.AutoSize = True添加到循环中:

Dim xLabel As Integer = lblPosition.Location.X
Dim yLabel As Integer = lblPosition.Location.Y
For i As Integer = 0 To film.Length - 1
    Dim label1 As New Label
    xLabel += 25 ' <---- 25 works better with your font size
    label1.Location = New Point(xLabel, yLabel)
    label1.AutoSize = True ' <---- HERE!
    label1.Text = "_"
    label1.BorderStyle = BorderStyle.FixedSingle ' <---- Added border for demo
    label1.Font = New Drawing.Font("Century Gothic", _
                  16, _
                  FontStyle.Bold)
    label1.ForeColor() = Color.White
    label1.Name = "lblLetter" & i
    Me.Controls.Add(label1)
Next

没有AutoSize

enter image description here

使用AutoSize

enter image description here