Hallo zusammen,
mein Programm besteht aus 2 Forms, frmMain und frmExplorer. Auf frmMain ist ein Button mit frmExplorer.Show(), mit dem die Ordner und Dateien eines bestimmten Laufwerks angezeigt werden sollen. Ich habe das Code-Beispiel auf das allernötigste beschränkt.
Das ganze funktioniert super, wenn man frmExplorer zum ersten mal öffnet. Wenn man frmExplorer aber schließt und wieder öffnet, tritt ein unschöner Fehler bei SendMessage auf: "System.ObjectDisposedException: Auf das verworfene Objekt kann nicht zugegrffen werden."
Das Problem tritt allerdings nicht auf, wenn man frmExplorer mit der ShowDialog-Methode öffnet, aber leider passt das modale Fenster überhaupt nicht zum Bedienkonzept (frmMain soll immer hinten bleiben).
Ich vermute, dass ich hier etwas wesentliches nicht beachtet habe. Mit Form.Dispose() sollten doch alle Ressourcen der Form, also auch Listview1, freigegeben werden?
Vielen Dank!
Burkhard
mein Programm besteht aus 2 Forms, frmMain und frmExplorer. Auf frmMain ist ein Button mit frmExplorer.Show(), mit dem die Ordner und Dateien eines bestimmten Laufwerks angezeigt werden sollen. Ich habe das Code-Beispiel auf das allernötigste beschränkt.
Das ganze funktioniert super, wenn man frmExplorer zum ersten mal öffnet. Wenn man frmExplorer aber schließt und wieder öffnet, tritt ein unschöner Fehler bei SendMessage auf: "System.ObjectDisposedException: Auf das verworfene Objekt kann nicht zugegrffen werden."
Das Problem tritt allerdings nicht auf, wenn man frmExplorer mit der ShowDialog-Methode öffnet, aber leider passt das modale Fenster überhaupt nicht zum Bedienkonzept (frmMain soll immer hinten bleiben).
Ich vermute, dass ich hier etwas wesentliches nicht beachtet habe. Mit Form.Dispose() sollten doch alle Ressourcen der Form, also auch Listview1, freigegeben werden?
VB.NET-Quellcode
- Private Sub cmdSchliessen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSchliessen.Click
- Me.Dispose()
- End Sub
- Private Sub Update_LV(ByVal sDirectory As String)
- Try
- ListView1.Items.Clear()
- For Each fDirs As String In IO.Directory.GetDirectories(sDirectory)
- ' ListView1 mit Verzeichnissen füllen...
- Next
- For Each file As String In IO.Directory.GetFiles(sDirectory)
- ' ListView1 mit Dateien füllen...
- Next
- '### Hier tritt der Fehler auf:
- SendMessage(ListView1.Handle, WM_LBUTTONUP, 1&, 0&)
- Catch ex As Exception
- MsgBox(ex.ToString)
- End Try
- End Sub
Vielen Dank!
Burkhard