投稿者 shu  (社会人) 投稿日時 2011/12/5 14:00:27
Form1:Button1とLabel1
Form2:Button1とTextBox1
を配置


それぞれ以下のコードを実装
するとForm1のボタンをクリックするとForm2が表示され
Form2のTextBox1に入力後Form2のボタンをクリックすると
入力した内容がForm1のラベルに表示されます。
こんな感じの実装をすると別スレッドを使用せずに実現することも
可能だと思います。


Public Class Form1

    Private WithEvents pfrm2 As Form2 = Nothing

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If pfrm2 Is Nothing Then
            pfrm2 = New Form2
            pfrm2.ClickAction = AddressOf ClickAction
            pfrm2.Show()
        End If
    End Sub

    Private Sub ClickAction(Text As String)
        Label1.Text = Text
    End Sub

    Private Sub pfrm2_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles pfrm2.FormClosed
        pfrm2 = Nothing
    End Sub
End Class


Public Class Form2
    Public Property ClickAction As Action(Of String) = Nothing

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If ClickAction IsNot Nothing Then
            ClickAction.Invoke(TextBox1.Text)
        End If
    End Sub
End Class