Form1.showDialog > wie schliessen?

F_P_aus_K

Erfahrenes Mitglied
ich öffne die Forms grne mit Form1.ShowDialog (also Modal) damit diese Fenster nicht versehendlich doppelt geöffnet werden kann, oder andere Funktionen von anderen Fenstern bedient werden können. Nur beim Schliessen der Form1
(mit Me.Close) und wieder öffnen habe ich manchmal Probleme. Entweder der Timer funktioniert nicht (obwohl ornungsgemäss dis-/ und enabled)mehr richtig oder irgend welch Werte (die ich irgendwo anders deklariert habe) werden nicht richtig übernommen.

Gibt es da eine andre Möglichkeit die Forms zu schliessen ?
Wird der Thread mit Me.Close nicht richtig geschlossen ?

vielen Dank

Frank
 
Ich habe bei meinem Projekt ein Modul eingefügt, das für die Verwaltung der Fenster verantwortlich ist.

Darin ist für jedes Fenster eine Objektvariable enthalten, die von anfang an instanziert wird.

Ich öffne und schliesse meine Fenster mit form.show() und form.hide()
Vorteil: Kann nur einmal existieren, da nur eine Instanz vorhanden.
Alle Werte, Prozeduren (auch Timer) bleiben, auch während und nach dem Verstecken und wieder Anzeigen erhalten.


Ich hoffe, dir damit geholfen zu haben.

PS: Mit Threads kenn ich mich nicht so aus, wenn auch ein sehr spannendes Thema. Eigentlich sollte der Thread dann geschlossen sein, bin mir aber nicht ganz sicher...
 
oh ja, auch eine sehr gute Idee.

Erst alle Forms öffnen und alle nicht gebrauchten auf hide oder disable setzen.

vielen Dank

Frank
 
Bei Fenster die nur einmal geöffnet werden dürfen kann ich nur Singleton Pattern unter vb.net empfehlen.

Geht in etwa so:

Public Class frmOptionen
Inherits System.Windows.Forms.Form
private shared myInstance as frmOptionen

public shared function GetInstance()as frmOptionen
if myInstance is nothing then
myInstance = new frmOptionen
end if

return myInstance

end function
private sub OnClosing(.....)
cancel = true
me.hide()
end sub
.... übriger Sourcecode.........

end class



Aufrufende Methode

private sub mnuOptionen_Click(sender as object, e as System.EventArgs)

Dim dlgOptionen as frmOptionen = frmOptionen.GetInstance
dlgOptionen.Show

end sub
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück