フォーム間の値の受け渡し

■値を渡すフォームを開く側
    '---passRecValueを授受する値とする。
 Dim passRecValue as ClassTest
 ’---passRecValueに渡す値をセット

 passRecValue =渡し元Formでの処理
   '---RecFormを渡し先Formとする。このメソッドの戻り値で

 ’---渡し先Formで処理された値を受け取る
 passRecValue = RecForm.ShowForm(passRecValue)

■値を受けるフォーム

 Public Class RecForm

  ’---受けとり戻す値をセットする変数をPrivateで定義しておく
  Private _returnValue As ClassTest
     ’---Sharedでフォームを開くメソッドを定義しておく

  ’---このメソッドの戻り値で、返す値を返す
  Public Shared Function ShowForm(Optional ByVal recVal As ClassTest= Nothing) As ClassTest
   Dim frm As RecForm= New RecForm

   ’---授受用の変数に受け取った値をセット

   frm ._returnValue = recVal 
   frm .ShowDialog() '---①
           '---返す値を変数に退避(返す前にFormをDisposeする為)
   Dim receive As ClassTest= frm ._returnValue
    frm .Dispose()
   Return receive
 End Function

 ’---フォームを閉じるタイミングなどで_returnValueをセット
 Private Sub BtnClose_Click(sender As Object, e As EventArgs) Handles    
  BtnClose.Click
  _returnValue = 受け先Formでの処理
  Me.Close()'---②
 End Sub

 

 (*)①のタイミングで渡し先Form内の処理に移り

  ②実行後に①の処理に戻る。