Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VB.net的picturebox中显示上一幅图像?_Vb.net - Fatal编程技术网

如何在VB.net的picturebox中显示上一幅图像?

如何在VB.net的picturebox中显示上一幅图像?,vb.net,Vb.net,我已经将图像存储在一个数组中,之后,我添加了一个if语句来检查当前显示的图像,这是我的代码,但没有结果 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Dim img(3) As Image img(0) = My.Resources.bugs img(1) = My.Resources.discuss img(2

我已经将图像存储在一个数组中,之后,我添加了一个if语句来检查当前显示的图像,这是我的代码,但没有结果

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        Dim img(3) As Image
        img(0) = My.Resources.bugs
        img(1) = My.Resources.discuss
        img(2) = My.Resources.flower
        img(3) = My.Resources.mask
        If PictureBox1.Image Is img(0) Then
            PictureBox1.Image = img(3)
        End If
    End Sub

您的代码存在严重问题。您不应该像那样反复访问
My.Resources
的同一属性。这是因为它每次提取数据并创建一个新对象,因此每次用户单击该按钮时,您将创建四个新的
图像
对象。您应该提取资源并只填充数组一次

这就是您的
If
语句不起作用的原因。即使它们是从同一资源创建的,
PictureBox
中当前的
Image
对象与数组中的对象不同

您应该将当前图像的索引存储在一个字段中,然后,每次您想转到下一个图像时,只需增加该字段的值,并在该索引处获得
图像
。您可以使用
Mod
在数组末尾换行

Private images As Image() = {My.Resources.bugs,
                             My.Resources.discuss,
                             My.Resources.flower,
                             My.Resources.mask}
Private imageIndex As Integer = 0

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    PictureBox1.Image = images(imageIndex)
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    imageIndex = (imageIndex + 1) Mod images.Length
    PictureBox1.Image = images(imageIndex)
End Sub
我没听清你说的是“上一个”而不是“下一个”。这将有助于:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    imageIndex -= 1

    If imageIndex < 0 Then
        imageIndex = images.GetUpperBound(0)
    End If

    PictureBox1.Image = images(imageIndex)
End Sub
Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
imageIndex-=1
如果imageIndex<0,则
imageIndex=images.GetUpperBound(0)
如果结束
PictureBox1.Image=图像(imageIndex)
端接头