我正在用VB编写一个小程序,而且我想要在按钮上添加特定图像点击图片框。对我来说棘手的部分是,每次单击按钮时,我都希望图像(来自相同位置,例如“C:\ Test.jpg”)出现在下一个图片框中。
我尝试在图片框名称中使用一个变量,并在每次点击时增加它,但它一直出错(显然必须使用它错误)。
所以要说得更清楚:
我点击Button1
来自位置“C:\ Test.jpg”的图像出现在PictureBox1 中我再次点击Button1
来自位置“C:\ Test.jpg”的图像出现在PictureBox2中 等你可以想象,我不是VB.NET的专家,所以如果好人有任何建议,请提前谢谢你:D
Vahur
答案 0 :(得分:0)
表单级别:
Private mPList As New List(of PictureBox)
Private pIndex as Integer = 0
表格显示:
With mPlist
.Add(PictureBox1)
.Add(PictureBox2)
... continue as needed
Ens With
按钮单击
' remove image from last picbox (????)
mPlist(pIndex).Image = Nothing
pIndex += 1
if pIndex > mPlist.Count-1 then pIndex = 0
mPlist(pIndex).Image.FromFile(filename)
答案 1 :(得分:0)
这是使用Controls.Find()的另一种方法:
Public Class Form1
Private counter As Integer = 0
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
counter = counter + 1
Dim matches() As Control = Me.Controls.Find("PictureBox" & counter, True)
If matches.Length > 0 AndAlso TypeOf matches(0) Is PictureBox Then
Dim pb As PictureBox = DirectCast(matches(0), PictureBox)
Using fs As New System.IO.FileStream("C:\Test.jpg", IO.FileMode.Open)
pb.Image = New Bitmap(Image.FromStream(fs))
End Using
End If
End Sub
End Class
答案 2 :(得分:0)
这个问题,我敢肯定,是你试图找出如何增加一个数字并获得图片框的句柄来设置图片。我将在这里做一些假设,因为你正在制作纸牌游戏,你将拥有一定数量的玩家。你有几个选择:
对于数字,您可以在表单中设置一个PRIVATE变量来保存下一个数字,然后在每个按钮上单击,将其递增1。
Private Player1NextImage as byte = 1
Private Player2NextImage as byte = 1
Private Player3NextImage as byte = 1
Private Player4NextImage as byte = 1
在按钮单击中,对于特定播放器,您可能希望获得下一个的图片框:
您可以将列表框列表保存在列表中,如@Plutonix所示,或者您可以使用SELECT CASE语句并对图片框进行硬编码。
Select Case Player1NextImage
Case 1
Player1Card1PictureBox.Image = ...
Case 2
Player1Card2PictureBox.Image = ...
Etc...
'Then increment the number
Player1NextImage += 1
答案 3 :(得分:0)
有多种方法可以做到这一点。假设您的变量名为Counter,并且(假设)您的picturebox的父级是主窗体/控件,将其添加到您的按钮单击事件:
Counter += 1
Dim Pic As PictureBox = CType(Me.Controls("PictureBox" & Counter.ToString), PictureBox)
If Pic Is Nothing Then
MsgBox("Could not find PictureBox")
Else
Pic.Image = Image.FromFile("C:\Test.jpg")
End If