Ошибка после размещения формы в MDI Parent
У меня есть родительский MDI в качестве родительской формы, и я использую его для открытия и организации других форм в качестве дочерних. я использую этот метод, чтобы открыть дочерние формы:
Public Sub OpenForm(ByVal frm As Form)
frm.MdiParent = MainView
frm.Show()
End Sub
метод работает правильно, и у меня нет проблем с его использованием для открытия дочерних форм. у меня есть 3 элемента в каждой дочерней форме:
1- DataGridViewX (от DevComponents.DotNetBar.Controls)
2- Панель
3- UserControl
Я могу использовать каждый из этих пунктов правильно, и никаких ошибок не появляется. DataGridViewX связан с источником данных, и все правильно. проблема возникает, когда я открываю 2 или более форм внутри MDI Parent, а затем пытаюсь закрыть их. Ошибка:
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
теперь, очевидно, я не пишу код внутри конструктора и не помещаю элементы в форму, используя код. Я использую интерфейс дизайнера.
что я должен делать? Спасибо
1 ответ
Просто установите источник привязки DataGridViewX в ничто, и проблема решена!
Private Sub theForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
DataGridViewX1.DataSource = Nothing
End Sub