◎仕様
①アクション
チェックボックスはオン、フォームオープン
フォームボタンでフォーム1(1号機、2号機)を2個開く
チェックボックスはオフ、フォームコントロール
②アクション
フォームボタンでフォーム1(1号機、2号機)を3回、交互にアクティブにする。
◎ソース
■Module1.vb
Module Module1
Public str As String = ""
Public intCnt As Integer = 0
End Module
■Main.vb
Public Class Main
Private cForm1 As New Form1()
Private cForm2 As New Form1()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If CheckBox1.Checked = True Then
'制御を行うフォームを開く
cForm1.Show()
cForm2.Show()
CheckBox1.Checked = False
CheckBox1.Text = "Form Ctl"
Else
'開いているフォームを制御
For i = 1 To 3
cForm1.Activate()
cForm2.Activate()
Next i
End If
Me.Activate()
End Sub
End Class
■Form1.vb
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
If str = "" Then
str = "1号機"
Else
str = "2号機"
End If
Me.Text = str.ToString
End Sub
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
'メインフォームのチェックボックスを判定する
If Main.CheckBox1.Checked = False Then
'フォーム制御時の処理
System.Threading.Thread.Sleep(800)
intCnt += 1
Console.WriteLine("{0}={1}", Me.Text & "_intCnt", intCnt)
End If
End Sub
End Class
◎ソース(プロパティ版)
■Module1.vb
Module Module1
Public str As String = ""
Public intCnt As Integer = 0
End Module
■Main.vb
Public Class Main
Private cForm1 As New Form1()
Private cForm2 As New Form1()
Private Shared _mainInstance As Main
Public Shared Property MainInstance() As Main
Get
Return _mainInstance
End Get
Set(ByVal Value As Main)
_mainInstance = Value
End Set
End Property
Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
Main.MainInstance = Me
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If CheckBox1.Checked = True Then
'制御を行うフォームを開く
cForm1.Show()
cForm2.Show()
CheckBox1.Checked = False
CheckBox1.Text = "Form Ctl"
Else
'開いているフォームを制御
For i = 1 To 3
cForm1.Activate()
cForm2.Activate()
Next i
End If
Me.Activate()
End Sub
End Class
■Form1.vb
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
If str = "" Then
str = "1号機"
Else
str = "2号機"
End If
Me.Text = str.ToString
End Sub
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
'メインフォームのチェックボックスを判定する
If Main.MainInstance.CheckBox1.Checked = False Then
'フォーム制御時の処理
System.Threading.Thread.Sleep(800)
intCnt += 1
Console.WriteLine("{0}={1}", Me.Text & "_intCnt", intCnt)
End If
End Sub
End Class