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

希望它幫助。