Exn
Exn

Reputation: 809

Change two images in one picture box using a button (VB.NET)

I've been trying to change the image in a picture box. It works if I want to change it with one image, but I can't get it to change to the other image. It should alternate between the two images when I click the button.

Here is my code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click

    Dim num As Boolean

    If num = False Then

        PictureBox3.Image = My.Resources.Beep
        num = True

    Else

        PictureBox3.Image = My.Resources.Skateboard
        num = False

    End If


End Sub

I've been trying to figure out why it doesn't work for a long time, any help wouldbe appreciated.

Upvotes: 0

Views: 10803

Answers (2)

Steve
Steve

Reputation: 216273

You variable num is local to the method, so you could change it how you like, but everytime this code is called the variable num is recreated and given the default initial value of False.
It will be True just from the point in which you set it to the exit of the method

To resolve the problem you need to declare it Shared or declare it outside the procedure at class global level

Shared option

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click

    Dim Shared num As Boolean
    If num = False Then
        PictureBox3.Image = My.Resources.Beep
        num = True
    Else
        PictureBox3.Image = My.Resources.Skateboard
        num = False
    End If
End Sub

Class level option

Dim num As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
.....
End Sub

Upvotes: 1

syed mohsin
syed mohsin

Reputation: 2938

Your num variable is in the method so when you call your method it initializes again and again and doesn't remember what you set it(either true or false) last time. Try this.

Dim num As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click

   If num = False Then
       PictureBox3.Image = My.Resources.Beep
       num = True
   Else
       PictureBox3.Image = My.Resources.Skateboard
       num = False
End If

End Sub

Upvotes: 1

Related Questions