vb.net通过面板控件将图像分配给picturebox

时间:2013-01-31 15:59:41

标签: vb.net image panel picturebox

我正在用VB.NET编写一个纸牌游戏程序。 我遇到了一个问题。 Computer_Flow在设计窗口上手动声明为System.Windows.Forms.Panel。我已经以编程方式创建了一个像这样的图片框:

Dim P As PictureBox = New PictureBox  
P.Size = New Point(Cards_Width, Cards_Height)  
P.SizeMode = PictureBoxSizeMode.StretchImage  
P.Image = Image.FromFile(Images_Folder_Path & "Back.png")   
P.Tag = Deck(DI)    
P.Margin = New Padding(1)  
Computers_Hand(DI) = Deck(DI)  
Computer_Flow.Controls.Add(P)

稍后我想要更改PictureBox图像。我试图改变它:

Computer_Flow.Controls(i).image = Image.FromFile(Images_Folder_Path & "Back.png")  

但我得到一个错误,上面写着:'image'不是System.Windows.Forms.Control'的成员。

谁能帮我解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

您正在访问Control列表,这是一个不包含Image成员的基类。

您需要将其标记为PictureBox

Dim pb As PictureBox = TryCast(Computer_Flow.Controls(i), PictureBox)

If Not pb Is Nothing Then
     pb.image = Image.FromFile(Images_Folder_Path & "Back.png")
End If

这样VB会知道它不仅仅是Control而是PictureBox,并且有一个Image成员。我建议添加TryCast,以防万一。

答案 1 :(得分:1)

您必须cast controlpicture box才能获得结果。 试试这个,

CType(Computer_Flow.Controls(i),PictureBox).image=Image.FromFile(Images_Folder_Path & "Back.png")

CType

修改

你可以像这样轻松地避免使用invalidCastException

If TypeOf Computer_Flow.Controls(i) Is PictureBox then

CType(Computer_Flow.Controls(i),PictureBox).image=Image.FromFile(Images_Folder_Path & "Back.png")

End If

TypeOf