【问题标题】:Why don't my Labels show in VB.NET Form为什么我的标签不显示在 VB.NET 表单中
【发布时间】:2013-12-15 23:00:29
【问题描述】:

阅读this问题后,我写了一些代码来为xml元素的每个属性创建一个标签。

问题是当我运行项目时,我的表单只显示第一个标签。我已经检查了即时窗口和调试窗口,所有标签都加载到表单中,但没有一个显示。帮忙?

这是表单加载时运行的代码。

Dim doc As New XmlDocument()
doc.Load("xmlfile")
Dim ability As XmlNode = doc.GetElementsByTagName("ability").Item(0)
Dim numberofLabels = ability.Attributes.Count
ReDim labels(numberofLabels)
For counter As Integer = 0 To numberofLabels - 1
    labels(counter) = New Label
    labels(counter).Visible = True
    labels(counter).Text = ability.Attributes.Item(counter).Name
    labels(counter).Location = New System.Drawing.Point(10, 30 + counter * 10)
    Me.Controls.Add(labels(counter))
Next

【问题讨论】:

  • 数组并不是真正需要的,如果你给它们一个好名字或标记它们,你可以很容易地在 Controls 集合中找到它们。试试看:Dim labels(counter) As New Label
  • counter * 10 是一个猜测。这种猜测并不总是很好,当它太低并且所有这些标签相互重叠时,事情就会变得很糟糕。这肯定会发生在“视网膜”显示器上。不要猜测,使用标签的 Height 属性。 你添加它之后。
  • 定位也可以通过将标签添加到FlowLayoutPanel而不是表单来平滑完成。还可以尝试将标签的名称设置为“lblXMLAttrib”和 counter.ToString 之类的名称

标签: vb.net winforms


【解决方案1】:

您应该使用一些布局管理器来帮助您控制定位。手动操作是不值得的。尝试使用TableLayoutPanelFlowLayoutPanel。两者都可以停靠或锚定到父控件,因此一切都非常顺利。否则,您需要编写大量定位/调整大小代码,然后再进行维护。

【讨论】:

    【解决方案2】:

    将原代码行中的 10 的值更改为一个更大的值,例如 40,这样新的标签可以在视觉上看起来是分开的:

    labels(counter).Location = New System.Drawing.Point(10 + counter, 30 + counter * 40)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多