Instanzieren eines Formulars separat sinnvoll?

03/12/2007 - 23:32 von Peter Gast | Report spam
Hallo,
da beide Arten funkionieren habe ich die Frage, welche besser ist

Sub A()
dim f as New frmOptionen
f.ShowDialog
f.Dispose
End Sub

oder

Sub A()
frmOptionen.ShowDialog
frmOptionen.Dispose
End Sub

In meiner mdi-Anwendung heißt das Hauptformular mdiMain. Sollte dies einer
global gültigen Variablen zugewiesen werden, um innerhalb des Programms auf
Bestandteile von mdiMain zurückzugreifen (auch in Klassen oder über
Formulare hinweg). Oder wàre mdiMain.XYZ im ganzen Programm verwendet,
gleichwertig?

Sollte die Dispose-Methode immer genommen werden und kann diese auch im
Finalize-Ereignis der Form unterbracht werden?

Danke Peter
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
04/12/2007 - 07:49 | Warnen spam
"Peter Gast" schrieb:
da beide Arten funkionieren habe ich die Frage, welche besser ist

Sub A()
dim f as New frmOptionen
f.ShowDialog
f.Dispose
End Sub

oder

Sub A()
frmOptionen.ShowDialog
frmOptionen.Dispose
End Sub



Wenn es sich um ein Formular handelt, von dem nur eine Instanz existiert,
halte ich die zweite Methode für sinnvoll. Ansonsten ist die erste
sinnvoller. Allerdings solltest Du überlegen, ob im zweite Fall der Aufruf
von 'Dispose' sinnvoll ist.

In meiner mdi-Anwendung heißt das Hauptformular mdiMain. Sollte dies einer
global gültigen Variablen zugewiesen werden, um innerhalb des Programms
auf Bestandteile von mdiMain zurückzugreifen (auch in Klassen oder über
Formulare hinweg). Oder wàre mdiMain.XYZ im ganzen Programm verwendet,
gleichwertig?



Das wàre gleichwertig. Ich würde dennoch stattdessen das ebenfalls
gleichwertige 'My.Forms.mdiMain.XYZ' benutzen.

Sollte die Dispose-Methode immer genommen werden und kann diese auch im
Finalize-Ereignis der Form unterbracht werden?



Letzteres ist ohnehin der Fall. Allerdings will man ein Formular
(unverwaltete Ressourcen) möglichst bald freigeben, wenn man es nicht mehr
benötigt. Beachte, daß ein Formular, das über 'Show' anstelle von
'ShowDialog' angezeigt wird, automatisch zerstört wird (Aufruf von
'Dispose'), wenn es geschlossen wird (Methode 'Close').

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen