我有一个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界面。
我该怎么办? 感谢
答案 0 :(得分:0)
只需将DataGridViewX的绑定源设置为空,问题就解决了!
Private Sub theForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
DataGridViewX1.DataSource = Nothing
End Sub