2016-07-31 14 views
0

Ich habe eine MDI Parent als übergeordnetes Formular und ich benutze es, um andere Formulare als Kind darin zu öffnen und zu organisieren. Ich benutze diese Methode Kind Formen zu öffnen:Fehler nach dem Entsorgen von Formular in MDI Parent

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

die Methode funktioniert richtig, und ich habe kein Problem es mit Kind Formulare zu öffnen. ich habe 3 Elemente in jedem Kind Form:

DataGridViewX 1- (von DevComponents.DotNetBar.Controls)

2- Bedienfeld

3- Benutzersteuerelement

i jedes dieser Elemente verwenden können richtig und es erscheint kein Fehler. DataGridViewX ist mit einer DataSource verbunden und alles ist korrekt. Das Problem tritt auf, wenn ich 2 oder mehr Formulare innerhalb der MDI Parent öffnen und dann versuchen, sie zu schließen. Der Fehler ist:

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". 

und dies ist der Code verantwortlich für Fehler:

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 

jetzt offensichtlich i innerhalb Designer nicht Code zu tun, noch Elemente in Form mit dem Code setzen. Ich benutze die Designer-Oberfläche.

was soll ich tun? danke

Antwort

0

nur bindende Quelle von DataGridViewX zu nichts gesetzt und Problem gelöst!

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