投稿者 allgreen  (社会人) 投稿日時 2020/5/25 13:08:24
ちょっと不思議な状態を見つけたので投稿です
Public Class Form1
    Public 変数1 As Integer
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim f As New Form2
        f.ShowDialog()
        Label1.Text = 変数1 & " " & Form2.変数2 & " " & Form3.変数3
    End Sub
End Class
Public Class Form2
    Public 変数2 As Integer
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim f As New Form3
        Form3.ShowDialog()
        Label1.Text = Form1.変数1 & " " & 変数2 & " " & Form3.変数3
    End Sub
End Class
Public Class Form3
    Public 変数3 As Integer
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form1.変数1 = 5
        Form2.変数2 = 4
        変数3 = 3
        Label1.Text = Form1.変数1 & " " & Form2.変数2 & " " & 変数3
    End Sub
End Class
フォームごとに、変数1、変数2、変数3がパブリックで宣言して
フォーム3で変数に数字を代入
フォームを閉じていけば、フォーム2、フォーム1に戻っていく
そのときに、変数1、変数2、変数3を表示
普通に考えれば、3回とも、5 4 3 が表示されると思うのですが
なぜかフォーム2のときの変数2が 0 となります

解決方法としては、グローバル変数を複数箇所で宣言しなければよいのですが
なぜ、このようになるのか不思議です