VB2005で教えてください
Form1とForm2があります。(クラス名です)
Form1でPublic flg As Booleanと定義してまして
Form1クラス内でflgをOn/Off操作(True/False)しています。
Form2はForm1のflgのOn/Off状態を表示します。
Form2でForm1のflgを得るのに
Dim b As Boolean
b = Form1.flg
としていますがちゃんと見れます。
これが不思議なんです。
Form2はクラス名で実体ではないのに
なぜForm1のflgの状態をちゃんとみれるんでしょうか?
VBではこれが普通なんでしょうか?
Form1が2つあったら判別できない気が..
プログラム例です。
Form1のflg操作がForm2に反映されます。
これは正しいプログラムの書き方なんでしょうか?
たまたまうまくいってるような気が…
Public Class Form1
Public flg As Boolean
Private f2 As Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
flg = False
f2 = New Form2
f2.Show()
End Sub
'Form1上でflgOFF
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
flg = False
End Sub
'Form1上でflgON
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
flg = True
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Button1.Visible = Form1.flg
End Sub
'1秒周期でForm1のflg状態を取得(ボタンの表示/非表示)
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Button1.Visible = Form1.flg
End Sub
End Class
「VB 暗黙 インスタンス」あたりでWeb検索してみてはどうでしょうか?
調べた感じでは
Form2.flgとしたことで自動的にインスタンスが生成され
それがForm2とリンクするってことでしょうか。
その機能?はMainSubを自分で実装することで無効になるようです。
関連がよくわかりませんがあまりよくないということはわかりました。
ありがとうございました。