我们如何在VB.net的图片框中显示上一张图片?

时间:2017-11-11 11:15:41

标签: 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) = My.Resources.flower
        img(3) = My.Resources.mask
        If PictureBox1.Image Is img(0) Then
            PictureBox1.Image = img(3)
        End If
    End Sub

1 个答案:

答案 0 :(得分:1)

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

这就是If声明不起作用的原因。即使它们是从同一资源创建的,Image中当前的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

我想念你说过"之前"而不是" next"。这将适用于此:

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