0

私のプロジェクトに問題があります.2つのフォームがあり、1つのフォームがMDI container = trueあり、1つのフォームが子フォームです. 以下のような親フォームのコードがあります

   Public Class frmInduk
    Dim afrmDaftarBarang As frmDaftarBarang = frmDaftarBarang.instance
    Private Sub DataBarangToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataBarangToolStripMenuItem.Click

        With afrmDaftarBarang
            .MdiParent = Me
            'Dim afrmDaftarBarang As frmDaftarBarang = frmDaftarBarang.instance
            .Show()
            .Focus()

        End With
    End Sub
End Class

それよりも、私の子フォームには以下のようなコードがあります

Public Class frmDaftarBarang
Private Shared anInstance As frmDaftarBarang
Public Shared ReadOnly Property instance() As frmDaftarBarang
    Get
        If anInstance Is Nothing Then
            anInstance = New frmDaftarBarang

        End If
        Return anInstance

    End Get
End Property

End Class

このプロジェクトを実行しても問題ありません。私のプロジェクトは非常にうまく実行できます。しかし、電話するとトラブルが発生し、閉じますが、再度frmDataBarang電話すると、以下frmDataBarangのエラーシラミの画像が表示されます

ここに画像の説明を入力

誰かが私を助けてくれることを願っています:(

4

4 に答える 4

1

クラスが 2 回目に呼び出されると、インスタンスはNothingまだ存在するため、破棄された状態ではありません。破棄されているかどうかを確認するには、チェックを追加する必要があります。

これはうまくいくかもしれません:

Public Class frmDaftarBarang
Private Shared anInstance As frmDaftarBarang
Public Shared ReadOnly Property instance() As frmDaftarBarang
    Get
        If anInstance Is Nothing OrElse anInstance.IsDisposed Then
            anInstance = New frmDaftarBarang

        End If
        Return anInstance

    End Get
End Property

End Class
于 2013-05-03T09:31:38.633 に答える