Laden...

SaveFileDialoge im Programm schließen?

Erstellt von G-Beret vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.144 Views
G
G-Beret Themenstarter:in
3 Beiträge seit 2009
vor 14 Jahren
SaveFileDialoge im Programm schließen?

Hallo...
ich benutze eine SaveFileDialoge damit der Benutzer den Pfad zum Speichern sowie den Filenamen selbst wählen kann.
Da mein speichern aber etwas länger dauert (mehrere Datei werden erzeugt und gespeichert) hab ich eine Form erzeugt die mir den Status der Speicherung anzeigt.
Allerdings tut sie das quasi auf dem SaveFileDialog-Fenster Kann ich die Form (von SaveFileDialog) vorher selber irgendwie schließen oder ausblenden?
ein close oder sowas gibt es ja da nicht oder?

Hoffe das ist einigermaßen verständlich.

P
660 Beiträge seit 2008
vor 14 Jahren

hi G-Beret,

du könntest versuchen das Fenster mittels ShowWindow auszublenden.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

D
171 Beiträge seit 2008
vor 14 Jahren

Bau eine Funktion zu Speichern, die du über ein Menü oder sonst wie aufrufst. darin öffnest du den Dialog mit ShowDialog. Wenn du dann das Dialogergebnis auswertest ist doch an der stelle der Dialog schon geschlossen. Wenn du jetzt auf das Ok reagierst und deine Form öffnest, ist der Dialog schon geschlossen.
Entweder ist das kein Problem das so zu machen, oder ich habe das Verhalten bei mir immer falsch Beobachtet.

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,
vermutlich wird das untenliegende Fenster erst neu gezeichnet, wenn Du Deine Speichermethode verlässt. In diesem Fall könnte ein Invalidate() helfen, solbald du die Rückgabe vom Dialog eingesammelt hast.
Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

Gelöschter Account
vor 14 Jahren

vermutlich wird das untenliegende Fenster erst neu gezeichnet, wenn Du Deine Speichermethode verlässt. In diesem Fall könnte ein Invalidate() helfen, solbald du die Rückgabe vom Dialog eingesammelt hast.

nein. invalidate erklärt den bereich nur für ungültig. gezeichnet wird erst dann ,wenn wieder zeit zum zeichnen verfügbar ist, und das ist es zu dem zeitpunkt nicht.

ich würde mal tippen ,das du das aufwändige speichern im gui thread machst?

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,

nein. invalidate erklärt den bereich nur für ungültig. gezeichnet wird erst dann ,wenn wieder zeit zum zeichnen verfügbar ist, und das ist es zu dem zeitpunkt nicht.

Auch wieder wahr... Gezeichnet wird ja ohnehin erst wieder wenn die Methode verlassen wird.
Dann bleibt ja eigentlich nur noch, das Speichern in einen eigenen Thread zu verlagern.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

G
G-Beret Themenstarter:in
3 Beiträge seit 2009
vor 14 Jahren

ja tu ich.
habe es mit Application.OpenForms probiert doch taucht es dort nicht auf!

Werde es jetzt mal mit dem Tipp von ProGamer testen.

Gelöschter Account
vor 14 Jahren

Werde es jetzt mal mit dem Tipp von ProGamer testen.

wird auch nciht gehen.

hier findest du grund und lösung: [FAQ] Warum blockiert mein GUI?

G
G-Beret Themenstarter:in
3 Beiträge seit 2009
vor 14 Jahren

jopp du hattest recht JAck30lena.

Habe jetzte einen eigenen Thread zum speichern und rufe dort über Invoke die Aktualisierung meines Status-Fensters auf.
Klappt soweit super.

Danke...