簡體   English   中英

動態添加標簽而無需在vb.net中指定位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM