在 MDI Parent 中处理表单后出错

Error after disposing form in MDI Parent

我有一个 MDI Parent 作为父窗体,我用它来打开和组织其他窗体作为其中的子窗体。我使用此方法打开子窗体:

Public Sub OpenForm(ByVal frm As Form)
    frm.MdiParent = MainView
    frm.Show()
End Sub

该方法工作正常,我使用它打开子窗体没有任何问题。我在每个子表单中有 3 个项目:

1- DataGridViewX(来自DevComponents.DotNetBar.Controls)

2-面板

3- 用户控件

我可以正确使用这些项目中的每一项,并且没有出现错误。 DataGridViewX 与 DataSource 连接,一切正确。 当我在 MDI Parent 中打开 2 个或更多表单然后尝试关闭它们时,就会出现问题。 错误是:

    The following exception occurred in the DataGridView:
System.IndexOutOfRangeException: Index 0 does not have a value.
at
System.Windows.Forms.CurrencyManager.get_Item(Int32index) 
at
System.Windows.Forms.DataGridView.DataGridViewDataConnection.G" and caption "DataGridView Default Error Dialog".

这是导致错误的代码:

Partial Class Form1
    Inherits DevComponents.DotNetBar.OfficeForm

    'Form overrides dispose to clean up the component list.
    <System.Diagnostics.DebuggerNonUserCode()>
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing) '' <<<< ERROR LINE
        End Try
    End Sub

现在显然我不在设计器中编写代码,也不使用代码将元素放入表单中。我使用 Designer 界面。

我该怎么办? 谢谢

只需将 DataGridViewX 的绑定源设置为空,问题就解决了!

Private Sub theForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    DataGridViewX1.DataSource = Nothing
End Sub