关闭vb.net中的表单时出现System.ObjectDisposedException

时间:2018-04-25 01:02:14

标签: vb.net runtime-error

我有一个奇怪的错误,我确信这是非常简单的事情,但我不能为我的生活找出正在发生的事情。我以为我正在打开和关闭表格,但似乎有些不对劲。我正在使用VS 2015.我的程序设置为在最后一个表单关闭时关闭。我现在使用两种形式。

仪表板

Public Class frmDashboard
    Private Sub recExit_Click(sender As Object, e As EventArgs) Handles recExit.Click
        Me.Close()
    End Sub

    Private Sub recMember_Click(sender As Object, e As EventArgs) Handles recMember.Click, lblMember.Click

        'Create instance of Member Form
        Dim memberForm As New frmMember

        'Open an instance
        memberForm.Show()

        Me.Close()

        'Using this code test if the form window is still open
        For Each frm As Form In Application.OpenForms
            MessageBox.Show(frm.Name)
        Next


    End Sub
End Class

会员表格

Public Class frmMember

    Private Sub frmMember_Load(sender As Object, e As EventArgs) Handles Me.Load
        ShowSpouse(rdoMarried.Checked)
    End Sub

    Private Sub ShowSpouse(ByRef isMarried As Boolean)

        If isMarried Then
            'Marital status is set to married lets show the extra spouse information

            'Lets first make the form larger
            Me.Size = New Size(793, 576)

            'Now lets unhide the form
            pnlSpouse.Visible = True
            'pnlSpouse.Enabled = True

            lblSpouse.Visible = True
            'lblSpouse.Enabled = True

            lineSpouse.Visible = True
            'lineSpouse.Enabled = True

            'Now lets move the buttons to their new location
            btnApply.Location = New Point(624, 541)
            btnExit.Location = New Point(710, 541)

        Else 
            'Single is Selected
            'Let's make sure all the spouse information is hidden

            'Lets first make the form smaller
            Me.Size = New Size(793, 358)

            'Now lets hide the form and disable the controls
            pnlSpouse.Visible = False
            'pnlSpouse.Enabled = False

            lblSpouse.Visible = False
            'lblSpouse.Enabled = False

            lineSpouse.Visible = False
            'lineSpouse.Enabled = False

            'Now lets move the buttons to their new location
            btnApply.Location = New Point(624, 320)
            btnExit.Location = New Point(710, 320)
        End If

    End Sub

    Private Sub MaritalStatusChanged(sender As Object, e As EventArgs) Handles rdoSingle.CheckedChanged, rdoMarried.CheckedChanged
        ShowSpouse(rdoMarried.Checked)
    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click

        Dim dashboard As New frmDashboard 
        'Open the dashboard
        dashboard.Show()

        'Close the member form
        Me.Close()



    End Sub
End Class

我没有添加数据库但最终我会将数据加载到成员表单中。当我单击打开成员表单时,它会通过并在成员表单的表单加载事件中运行代码,然后将焦点返回到仪表板表单。在仪表板上运行Me.Close,但是一旦它到达End Sub就会抛出这个异常:

System.ObjectDisposedException was unhandled
Message: An unhandled exception of type 'System.ObjectDisposedException' occurred in System.Windows.Forms.dll
Additional information: Cannot access a disposed object.

非常感谢你们给予的任何帮助。

0 个答案:

没有答案