[英]Adding labels dynamically without specifying location in vb.net
我正在嘗試學習VB.net,但遇到了問題。 我試圖將標簽動態添加到面板/文本框/組框。 我注意到在創建動態標簽時,必須指定location屬性。 我對此感到有些驚訝-為什么我必須管理將要創建新標簽的確切位置? 為什么不擁有一個可以自動處理此問題的布局管理器? 無論如何,我找不到執行此操作的方法,但是我找到了一個提倡使用文本框動態添加標簽的示例。 但是,無論文本框內的內容如何,我只會看到一個標簽被顯示。 (調試時,我注意到向控件對象添加了更多標簽,但顯示未相應地反映出來)
這是它的樣子
這是我正在使用的代碼
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
如何添加動態標簽,而不必擔心它們在另一個容器中放置的位置?
您的代碼看起來不錯,並成功生成了標簽。 但這會使您的新標簽相互重疊,因為它們的位置相同。
您需要修改每個新標簽的位置的所有內容。 例如,為每個新標簽遞增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)..以此類推。
希望這能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.