投稿者 るきお  (社会人) 投稿日時 2012/6/2 13:55:35
今回の件ポイントは2つあります。 

1つは、呼び出し元のフォーム(Form1とします。)を閉じてしまうことです。
既定の設定だとForm2を開いた後でもForm1を閉じるとアプリケーションが終了してしまいます。
そこで、m190さんはフォームを閉じる代わりにMe.Hideを使用しており、zz6989さんはVisible = Falseでかわしています。
しかし、これだと今後はForm2を閉じた場合にすべてフォームが表示されていないのにアプリケーションが終わらないことになってしまいます。

2つめはForm1とForm2は互いに疎遠であるべきということです。
Form1を変更した場合にForm2にプログラムも連動して修正したり、逆にForm2を変更したときにForm1を連動して修正したりする必要がある事態はできるだけ避けたいものです。
私は互いに疎遠であることを「疎結合」と呼んでいます。 

以上、2点を踏まえたコード例を紹介します。

前提としてプロジェクトのプロパティ画面でシャットダウンモードを「最後のフォームが閉じるとき」に変更してください。
これによってForm1を閉じてもForm2が開いている限りアプリケーションは終了しなくなります。
 
※この画像は他から流用しているので赤い四角で囲ってある部分は関係ありません。 

Form1側
Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        ListBox1.Items.AddRange({"Apple""Banana""Cat""Dog"})

    End Sub

    Private Sub ListBox1_DoubleClick(sender As Object, e As System.EventArgs) Handles ListBox1.DoubleClick

        If ListBox1.SelectedItem Is Nothing Then
            '何も選択されていなければ何もしない。 
            Return
        End If

        Dim f As New Form2
        f.Show(ListBox1.SelectedItem)
        Me.Close()
    End Sub

    Private Sub ListBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress

        If e.KeyChar = Chr(Keys.Enter) Then
            ListBox1_DoubleClick(sender, e)
        End If

    End Sub

End Class


Form2側
Public Class Form2

    Public Overloads Sub Show(value As String)
        Me.TextBox1.Text = value
        Me.Show()
    End Sub

End Class