Da ich in diesem Forum genug von sowas hab:
(Dies geht, da VB.net eine implizite Instanz des Dialogs erstellt & Sie anzeigt (stammt aus VB6 Zeiten))
Zeig ich euch einfach mal, wie und vorallendingen wieso man eine Klasse instanzieren sollte;
Warum sollte man eine Klasse instanzieren?
Zu allererst, was ist eine Klasse?
Eine Klasse ist der Bauplan eines Objekts, welcher bei der instanzierung mittels dem Schlüsselwort new gegründet wird (also das Objekt). Wenn wir nun ohne Instanzierung auf die Klasse zugreifen, führt dies dazu, dass am Bauplan Sachen verändert werden --> Auswirkungen auf weitere Instanzierungen.
Probleme bei nicht Instanzierung:
-Um Events formübergreifend zu abonnieren wird eine Instanz dieser benötigt.
-Es können keine zwei Formen angezeigt werden, da bloß ein "Objekt" bzw der Bauplan vorhanden ist.
-Da an dem Bauplan Sachen geändert werden, wird bei einer weiteren Instanzierung, das Objekt gemäß dem Bauplan gebaut --> Änderung an zukünftig instanzierten Objekten.
Wie instanziere ich eine Form nun richtig?
Eine Form instanziert ihr mittels dem Schlüsselwort new;
Nun gibt es zwei Möglichkeiten diese anzeigen zu lassen:
und
Was ist nun der Unterschied zwischen beiden?
Die erste Methode, zeigt einfach die Form an - Die sonstige Code Durchführung wird weder angehalten, noch sonst beeinträchtigt.
Anders bei der zweiten Methode, diese hält die Code Durchführung an, solange der Dialog offen ist. Ausserdem kann der Dialog eine "Antwort" geben.
Hier mal ein kleines Beispiel:
Mit dem Klick auf Button1 schliesst sich die Form & die Messagebox erscheint.
Dies dient also, als eine Art Dialog mit Rückgabemöglichkeit.
Ich habe hier ausserdem eine using-kapselung genutzt, da die Klasse IDisposable implementiert & somit automatisch .dispose() aufgerufen wird.
Code:
Form2.show()
Zeig ich euch einfach mal, wie und vorallendingen wieso man eine Klasse instanzieren sollte;
Warum sollte man eine Klasse instanzieren?
Zu allererst, was ist eine Klasse?
Eine Klasse ist der Bauplan eines Objekts, welcher bei der instanzierung mittels dem Schlüsselwort new gegründet wird (also das Objekt). Wenn wir nun ohne Instanzierung auf die Klasse zugreifen, führt dies dazu, dass am Bauplan Sachen verändert werden --> Auswirkungen auf weitere Instanzierungen.
Probleme bei nicht Instanzierung:
-Um Events formübergreifend zu abonnieren wird eine Instanz dieser benötigt.
-Es können keine zwei Formen angezeigt werden, da bloß ein "Objekt" bzw der Bauplan vorhanden ist.
-Da an dem Bauplan Sachen geändert werden, wird bei einer weiteren Instanzierung, das Objekt gemäß dem Bauplan gebaut --> Änderung an zukünftig instanzierten Objekten.
Wie instanziere ich eine Form nun richtig?
Eine Form instanziert ihr mittels dem Schlüsselwort new;
Code:
Dim frm as new form2
Code:
frm.show()
Code:
frm.showDialog()
Die erste Methode, zeigt einfach die Form an - Die sonstige Code Durchführung wird weder angehalten, noch sonst beeinträchtigt.
Anders bei der zweiten Methode, diese hält die Code Durchführung an, solange der Dialog offen ist. Ausserdem kann der Dialog eine "Antwort" geben.
Hier mal ein kleines Beispiel:
Code:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using frm As New Form2
If frm.ShowDialog() = Windows.Forms.DialogResult.OK Then
MessageBox.Show("Ok wurde betätigt")
End If
End Using
End Sub
End Class
Code:
Public Class Form2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.DialogResult = Windows.Forms.DialogResult.OK
End Sub
End Class
Dies dient also, als eine Art Dialog mit Rückgabemöglichkeit.
Ich habe hier ausserdem eine using-kapselung genutzt, da die Klasse IDisposable implementiert & somit automatisch .dispose() aufgerufen wird.