0

画像ボックスの画像を変更しようとしています。ある画像で変更したい場合は機能しますが、別の画像に変更することはできません。ボタンをクリックすると、2 つの画像が交互に表示されます。

これが私のコードです:

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

なぜそれが長い間機能しないのかを理解しようとしてきましたが、助けていただければ幸いです。

4

2 に答える 2

1

変数numはメソッドに対してローカルであるため、好きなように変更できますが、このコードが呼び出されるたびに変数numが再作成され、デフォルトの初期値 False が与えられます。
メソッドの出口に設定した時点からTrueになります

この問題を解決するには、Sharedを宣言するか、クラス グローバル レベルでプロシージャの外で宣言する必要があります。

共有オプション

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

クラスレベルのオプション

Dim num As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
.....
End Sub
于 2013-04-04T18:45:09.677 に答える
1

num 変数はメソッド内にあるため、メソッドを呼び出すと、メソッドが何度も初期化され、最後に設定したもの (true または false) が記憶されません。これを試して。

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
于 2013-04-04T18:47:27.470 に答える