2012-06-05 5 views
1

나는 PictureBox가있는 양식을 만들었고 프로그램이 실행되는 동안 정적으로 다른 PictureBox를 동적으로 만들고 싶습니다. 이 코드를 실행하면Visual Basic의 동적 PictureBox

Dim temp As PictureBox 
temp = New PictureBox 
temp.Image = StaticPictureBox.Image 
temp.Visible = True 
temp.Top = StaticPictureBox.Top 
temp.Width = StaticPictureBox.Width 
temp.Height = StaticPictureBox.Height 
temp.Left = StaticPictureBox.Left - 20 
temp.BringToFront() 

내가 임시의 PictureBox가 생성 얻을 않는 것을 감지 할 수 있습니다 :이 코드를 작성했습니다. 그러나 양식에 렌더링되지 않습니다. 그것은 거기에있는 것처럼 보이지만 보이지 않습니다.

내가 뭘 잘못하고 있는지 알 수있는 사람이 있습니까?

답변

4

당신은 폼의 컨트롤 컬렉션에 추가해야합니다

Me.Controls.Add(temp) 
+0

이것은 많은 의미를 지니지 만 여전히 작동하지 않습니다. 나는 이것을 시도해보고 그 임시가 폼의 자식에 추가된다는 것을 알았다. 그러나 StaticPictureBox는 자식이 아니며 양식의 자식 인 일부 Panel 객체의 자식입니다. 그래서 나는 이것을 시도했다 : 'code' StaticPictureBox.Parent.Controls.Add (temp) 나는 그것이 효과가있을 것이라고 생각했다. 어떤 아이디어? –

+0

@SanderSmith 코드 *가 작동해야합니다. 이 코드는 내 코드에서 테스트 :'PictureBox1.Parent.Controls.Add (임시)'그리고 그것은 잘 작동합니다. 'StaticPictureBox'에 문제가 있다고 의심됩니다. – LarsTech

0

왜 그냥 코드를 제거하지 않고 다른 하나 옆에있는 PictureBox를 배치하고 설정 :

newpicturebox.visible = false 

그런 다음 작업을 완료 할 때마다 다음과 같이 바뀝니다.

newpicturebox.visible = true 
+0

이 간단한 경우에는 작동하지만 실제로 수행해야하는 작업은 동적으로/프로그래밍 방식으로 만들어야합니다. 나는 방금 사건을 간단하게 만들려고 했으므로 전체 프로그램 설명의 2 페이지를 읽을 필요가 없었습니다. –

0

나는 이것이 오래된 것을 알고 있지만, ROR 여기 :

temp.Left = StaticPictureBox.Left - 20 

은 다음과 같아야합니다

temp.Left = StaticPictureBox.right + 20 

나 :

temp.Left = StaticPictureBox.right 

가 도움이되기를 바랍니다.

관련 문제