2012-06-05 159 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

这很有道理,但仍然无效。 我试过这个,我看到temp被添加到窗体的子项中。但是,StaticPictureBox不是一个子对象,它是某个Panel对象的子对象,它是该窗体的子对象。所以我试过这个: '代码' StaticPictureBox.Parent.Controls.Add(temp) 我觉得它会工作,但没有。有任何想法吗? –

+0

@SanderSmith你的代码*应该*工作。我测试了这个代码:'PictureBox1.Parent.Controls.Add(temp)',它工作正常。我会怀疑'StaticPictureBox'有什么问题。 – LarsTech

0

你为什么不只是删除代码,并把一个图片旁边的另外一个,并设置:

newpicturebox.visible = false 

然后每当你有动作完成你有它的变化:

newpicturebox.visible = true 
+0

这适用于这种简化的情况,但我真正需要做的是动态/以编程方式创建它们。我只是试图让案例变得简单,所以你不需要阅读整个程序描述的2页。 –

0

我知道这是旧的,但...你有一个呃ROR这里:

temp.Left = StaticPictureBox.Left - 20 

应该是:

temp.Left = StaticPictureBox.right + 20 

或:

temp.Left = StaticPictureBox.right 

希望它帮助。