2014-05-10 4 views
0

다른 이름을 가진 While 안에 많은 변수를 만들지 않겠습니다.다른 이름을 가진 루프에서 변수를 만드는 시각

Dim asd As Integer = 1 
    While asd < 5 
     Dim picturebox +asd As New Picturebox 
    End While 

내가 등등 ...는 Picturebox1 Picturebox2를 생성하는 원하고 있지만, "ASD"변수가 평가되지 않고 코드가 작동하지 않습니다 여기에

내가 시도하는 것이다. Visual Studio를 사용하여 루프에서 다른 이름의 변수를 어떻게 만들 수 있습니까?

+1

가 왜 배열을 사용하지 않는? 'picturebox [3] = 새로운 PictureBox()'? – selkathguy

+0

아마도 그들을 form.Controls에 추가하는 것이 좋습니다. 21 세기에 우리는 로봇 개와 비행용 자동차를 가지고 있으므로 구식 배열을 사용할 필요가 없으며 Controls 컬렉션 이외의 곳에 저장해야하는 경우 List (of PictureBox)를 사용하십시오. – Plutonix

+0

@Plutonix FYI :'List '의 항목은 (구식)'Array '에 저장되어 있습니다. 게다가 나는 완전히 동의합니다;) –

답변

1

은 같은 것입니다 :

For i = 0 to 5 
    Dim t As New PictureBox() 
    t.Name = "PictureBox" & i 
    Me.Controls.Add(t) 
Next 
Dim picToChange = From r in Me.Controls Where Typeof(r) Is PictureBox AndAlso r.Name = "PictureBox1" Select r 
If picToChange IsNot Nothing AndAlso picToChange.Any Then 
    'Do Something 
End If 

이것은 매우 기본적인 예입니다 당신의 linq 아마 내가 사용하는 것보다 더 역동적이 될 것입니다하지만 당신은 얻을해야 생각. 이 경우 나는 당신이 폼에 PictureBoxes을 넣고 있다고 가정하고 있는데, 그렇지 않다면 컨트롤을 추가하는 컬렉션을 통해 linq을 사용해야 할 것입니다.

편집 # 1 :

는 지금까지 이벤트에 관한 한 수동 처리기를 추가해야합니다.

For i = 0 to 5 
    Dim t As New PictureBox() 
    t.Name = "PictureBox" & i 
    AddHandler t.Click, AddressOf(FunctionToHandleClick) 
    Me.Controls.Add(t) 
Next 
Dim picToChange = From r in Me.Controls Where Typeof(r) Is PictureBox AndAlso r.Name = "PictureBox1" Select r 
If picToChange IsNot Nothing AndAlso picToChange.Any Then 
    'Do Something 
End If 

을 그리고 FunctionToHandleClick이과 같습니다 : 그래서 당신의 코드가 될 것

Private Sub FunctionToHandleClick(ByVal sender As Object, ByVal e As ClickEventArgs) 
End Sub 
+1

'i' 루프 안에있는 코드를 한 줄로 줄일 수 있습니다 :'Me.Controls.Add (New PictureBox() With {.Name = "PictureBox"& i})';) –

+1

@ Bjørn-RogerKringsjå 매우 사실, asker가 VB에서 새로운 것 같기 때문에 가능한 한 명확하게하려고 노력했습니다 ... –

+0

그래, 그냥 언급 할만한 가치가 있다고 생각했습니다;) –

0

Array을 사용하지 않는 이유는 무엇입니까? 내가 과거에했던 어떤

Dim pictureboxes(5) As PictureBox 

For i As Integer = 0 To 5 
    pictureboxes(i) = New PictureBox() 
Next 
+0

vb.net의 루프 구문이 올바르지 않습니다. – Ric

+0

편집 됨. 나는 바보 같고 C# 구문으로 게시했습니다. – selkathguy

+0

그리고 내가 만들 필요가있는 그림 상자의 양도 변수라면 가능합니까? 'Picturebox' (변수)를 Picturebox로 사용합니다. –

관련 문제