2017-06-27 2 views
0

Wenn ich auf die Schaltfläche 'Modales Fenster öffnen' in [Hauptformular] klicke, wird das [Unterformular] mit einer Datenliste unter Verwendung der ObjectListView angezeigt Komponente.Zugriff auf entsorgtes Objekt in CellEditFinished-Ereignismeldungen von ObjectListView

Wenn ich auf die "Age" -Spalte klicke, um sie zu bearbeiten und den Wert in der Zelle auf einen Wert ungleich Null ändere, dann klicke auf das Leerzeichen der ObjectListView-Komponente (wenn ich Enter drücke, wird die Ausnahme nicht kommen out), es Popup eine Nachricht. Ich habe diese Nachricht vor allen geöffneten Fenstern hinterlassen und warte 10 Sekunden auf das Application Timeout. Zu diesem Zeitpunkt wird eine Ausnahme angezeigt:

Kein Zugriff auf ein entsorgtes Objekt möglich. Objektname: 'ObjectListView'. Hier

ist der Code:

private void button1_Click(object sender, EventArgs e) 
{ 
    modalForm = new Form2(); 
    StartTimeOutTimer(); 
    var result = modalForm.ShowDialog(this); 
} 

private void ProcessTimeOut() 
{ 
    timer1.Stop(); 
    seconds = 0; 
    List<Form> openForms = Application.OpenForms.Cast<Form>().Where(frm => !string.Equals(frm.Name, "Form1") && !frm.IsDisposed).ToList(); 
    for (var i = openForms.Count - 1; i >= 0; i--) 
    { 
     openForms[i].Dispose(); 
    } 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    seconds++; 
    if (seconds == 10) 
    { 
     ProcessTimeOut(); 
    } 
} 

die Ausnahme kommen in dieser Zeile:

var result = modalForm.ShowDialog (this);

Mein Ruf ist zu niedrig, um mehr Links hochzuladen, also poste ich den Code auf OneDrive. Der Beispielcode und Lösung ist hier:

https://1drv.ms/u/s!AmQYEYkCV6gqgw6iPMVFPBKlSx1V

Ich habe versucht, den Quellcode von Object in meiner Lösung hinzuzufügen, und der Fehler aufgetreten ist in der GetHeaderControl Methode im Quellcode von v2. 9.0

Bitte laden Sie meinen Beispielcode, um die Ausnahme zu reproduzieren. Wie behebe ich diese Ausnahme? Jeder Vorschlag wird geschätzt.

Antwort

0

Ich lade den Code und es scheint ein Fehler von objeclistview. Ich kann das Problem nicht beheben, aber ich habe eine Problemumgehung, um Ihr Problem zu lösen: Sie können ShowDialog() asynchron wie folgt aufrufen:

+0

Das ist wirklich eine hilfreiche Antwort. Danke vielmals! –

Verwandte Themen