我正在尝试学习VB.net,但我遇到了一个问题。我正在尝试动态添加标签到面板/文本框/组框。我注意到在创建动态标签时,我必须指定位置属性。我对此感到有些惊讶 - 为什么我必须管理新标签创建位置的确切位置?为什么不让布局管理器自动处理这个?无论如何,我找不到这样做的方法,但我找到了一个主张使用文本框动态添加标签的例子。但是,无论文本框中有什么内容,我只会看到一个标签被显示出来。 (当我调试时,我注意到控件对象中添加了更多标签,但显示没有相应反映)
这就是它的样子
这是我正在使用的代码
Private Sub AddTagCombo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles addTagCombo.SelectedIndexChanged
Dim selectedTag = addTagCombo.Text
If Not IsDuplicateTag(selectedTag) Then
Dim label As Label = New Label
label.Text = selectedTag
label.Name = selectedTag
label.AutoSize = True
label.Top = 10
label.Left = 10
tagsBox.Controls.Add(label)
End If
End Sub
如何添加动态标签而不必担心它们放置在另一个容器内的位置?
答案 0 :(得分:2)
您的代码看起来不错并成功生成标签。但它会将您的新标签放在彼此之上,因为它们的位置相同。
所有您需要的每个新标签的位置。例如,为每个新标签增加lebel.Top。
这里建议如何:
'Add a variable to increment top location
Dim TopFactor As Integer = 1
Private Sub AddTagCombo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles addTagCombo.SelectedIndexChanged
Dim selectedTag = addTagCombo.Text
If Not IsDuplicateTag(selectedTag) Then
Dim label As Label = New Label
label.Text = selectedTag
label.Name = selectedTag
label.AutoSize = True
label.Top = 10 * TopFactor
label.Left = 10
tagsBox.Controls.Add(label)
'Increment TopFactor
TopFactor +=1
End If
End Sub
现在,第一个标签将位于(10,10),第二个将位于位置(20,10)......依此类推。
希望这能解决你的问题。