在MDI Parent中处理表单后出错

时间:2016-07-31 07:40:36

标签: vb.net forms visual-studio-2010 dotnetbar

我有一个MDI Parent作为父表单,我用它打开并组织其他表单作为其中的子项。我使用这种方法打开子表单:

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

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

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

2-小组

3- UserControl

我可以正确使用这些项目,并且不会显示任何错误。 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界面。

我该怎么办? 感谢

1 个答案:

答案 0 :(得分:0)

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

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