【发布时间】: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 之类的名称