2014-02-26 3 views
2

Panel 컨트롤에 동적으로 컨트롤을 만드는 방법내가 패널 5에 PictureBox 컨트롤을 만들

Dim a As PictureBox = New PictureBox 
Dim loc As Point = New Point(0, 0) 

    For n As Integer = 0 To 4 
     a.Location = loc 
     a.Size = New Size(100, 100) 
     a.BorderStyle = BorderStyle.Fixed3D 
     a.BackColor = Color.Aqua 
     Panel1.Controls.Add(a) 
     n = n + 1 
     loc = a.Location + New Point(50, 50) 
    Next 

내가 도망 매번는 루프에서 수있는 마지막 위치에 패널에 하나 개의 PictureBox 컨트롤이 . FlowLayoutPanel을 사용하지 않고이 패널에 5 개의 그림 상자를 만드는 방법

루프에 대한 또 다른 문제가 있습니다.이 단계에서는 n + = 2와 같이 n 단계 증가 할 때마다 "단계"를 사용하지 않았습니다. 이유는 무엇입니까? 이것은 n = n + 1이라고 선언해도 이렇게 증가합니다.

답변

2

패널에 동일한 그림 상자에 5 개의 참조를 추가하는 것처럼 보입니다. 첫 번째 명령문이 실행될 때 For 루프 내에서 다음을 이동하는 것이 좋습니다 :

Dim a As PictureBox = New PictureBox 

+0

을 오 세상에! 당신 말이 맞아요! 나는 왜 그런 일을 한 후에 그런 간단한 것을 이해할 수 없는지 모르겠다! 어쨌든 감사합니다 – EmPlusPlus

+0

문제 없습니다 - 우리 모두가 그곳에 머물 렀습니다 ... –

2

이 같은 코드를 단순화 할 수 있습니다 :

Dim PicBoxes(4) As PictureBox 

    For Index As Integer = 0 To PicBoxes.Length - 1 

     PicBoxes(Index) = 
      New PictureBox With 
       { 
        .Location = New Point(50 * Index, 50 * Index), 
        .Size = New Size(100, 100), 
        .BorderStyle = BorderStyle.Fixed3D, 
        .BackColor = Color.Aqua 
       } 

    Next Index 

    Panel1.Controls.AddRange(PicBoxes) 
관련 문제