Announcement

Collapse
No announcement yet.

Exception: System.ObjectDisposedException

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exception: System.ObjectDisposedException

    In Details steht: Auf das verworfene Objekt kann nicht zugegriffen werden.
    Dann wird das Objekt(Die Form die starten sollte ) genannt und aufgezählt "bei wo" sozusagen der Fehler passiert, etwa so:

    bei System.Windows.Forms.Control.CreateHandle():
    bei System.Windows.Forms.Form.CreateHandle():
    ... bis Control.Show():

    dann wieder werden von mir erstellte Sachen(Das UserControl was ich selbst erstellt haben und in dieser Form später durch klicken auf Erstellen erstelle) angezeigt die nicht geladen werden konnten.

    Aber ich denke es liegt an diesem Diposed Problem . D.h. doch dass ich nicht Einfach Form.Close() aufrufen darf wenn wenn ich die Form schließen möchte, oder?

    Die Form sieht so aus : Es wird ein Fenster aufgemacht , dort drin wird durch das betätigen eines "Erstellen Buttons" ein zusammengestezes UserControl erstellt.
    Wenn ich nun die From das erste mal schließe und wieder neuöffnen möchte kommt die Obengenannte Exception.

    FRAGE: Warum kann auf das verworfenen Objekt nicht zugegriffen werden? Ich starte doch das Erstellen der Form neu wenn ich sie starte oder nicht?

  • #2
    Nach einem Close ist die Form unbenutzbar, sie ist disposed, du musst dann schon eine neue erzeugen. Also wieder new WasAuchImmerForm aufrufen.
    Wenn du explizit die gleiche Form wiederverwenden willst weil da noch irgendein State auf der Form existiert denn du brauchst benutze nicht Close() sondern nur Hide().

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      benutze nicht Close() sondern nur Hide().
      Ich benutze eigentlich nicht Close() sondern drücke auf das rote X . Wie kann ich den Event den manipulieren damit Hide() aufgerufen wird wenn ich da drauf klicke?? Oder gibt es 'ne andere Möglichkeit?

      Comment


      • #4
        Das wäre der Closing Event. Dort Cancel in den EventArgs auf true setzen und dann Hide aufrufen.

        Comment


        • #5
          Originally posted by Hardware View Post
          Ich benutze eigentlich nicht Close() sondern drücke auf das rote X . Wie kann ich den Event den manipulieren damit Hide() aufgerufen wird wenn ich da drauf klicke?? Oder gibt es 'ne andere Möglichkeit?
          Gelöst mit 'nem EventHandler auf eine Methode die jedesmal wenn ich MeineForm.Show() starte vorher ausgeführt wird und ein Objekt von MeineForm erstellt.

          Danke Leute

          Comment

          Working...
          X