2013-12-15 3 views
3

this 질문을 읽은 후 xml 요소의 각 특성에 대한 레이블을 만들 코드를 작성했습니다.내 레이블이 VB.NET 형식으로 표시되지 않는 이유

문제는 프로젝트를 실행할 때 양식에 첫 번째 레이블 만 표시된다는 것입니다. 직접 창과 디버그 창을 모두 확인한 후 모든 레이블이 양식에로드되지만 그 중 아무 것도 표시되지 않습니다. 도움?

다음은 양식이로드 될 때 실행되는 코드입니다.

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 
+1

배열은 실제로 필요하지 않습니다. 이름을 잘 지정하거나 태그를 지정하면 Controls 컬렉션에서 쉽게 찾을 수 있습니다. 보십시오 :'Dim labels (counter) As New Label' – Plutonix

+2

카운터 * 10은 추측이었습니다. 그 추측은 항상 잘 작동하지 않습니다. 상황이 너무 낮아서 이러한 레이블이 모두 서로 겹치면 상황이 나 빠지게됩니다. 확실히 "망막"디스플레이에서 발생합니다. 추측하지 말고 레이블의 Height 속성을 사용하십시오. * 후에 *를 추가했습니다. –

+2

폼에 레이블이 아니라 FlowLayoutPanel에 레이블을 추가하여 위치를 매끄럽게 수행 할 수도 있습니다. 또한 레이블 이름을 ''lblXMLAttrib '& counter.ToString'과 같이 설정하십시오. – Jens

답변

3

당신은 몇 가지를 사용한다 레이아웃 관리자, 제어 위치 지정에 도움이됩니다. 수동으로하는 것은 고통의 가치가 없습니다. TableLayoutPanel 또는 FlowLayoutPanel을 사용해보세요. 둘 다 부모 컨트롤에 도킹되거나 앵커 될 수 있으므로 모든 것이 매우 원활하게 동작합니다. 그렇지 않으면 많은 위치 지정/크기 조정 코드를 작성한 다음 나중에 유지 보수하려고합니다.

0

변경에게 더 큰 가치 등 (40)에 새로운 지점에 대한 원래의 코드 라인에서 10의 값, 새 레이블을 시각적으로 분리 나타날 수 있도록 :

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