Hallo Leute,
in dem Programm werden mehrere Fenster (SDI) kontrolliert nacheinander abgearbeitet.
Alles soweit , so gut.
Jetzt soll der Benutzer aber die Möglichkeit haben, ein oder mehrere Fenster zurück gehen zu können.
Dem Benutzer ist dabei klar, daß alle nach "hinten" (zurück) verlassene Fenster gelöscht werden müssen.
Falls in einem Fenster Daten verändert werden, müssen die neuen Daten in dem nachfolgenden Fenster
entsprechend den neuen Daten aus einer DB angepasst werden.
Habe mich etwas verzettelt, und benötige mal wieder einen kleinen TRITT.
Wenn nur nach vorne abgearbeitet wird gibt es kein Problem mit den Forms.
Sobald aus einer Form nach hinten gesprungen wird, erhalte ich immer ein Neues(altes) Form.
Die neue Form zeigt dann auch natürlich nicht die schon mal gemachten Einstellungen.
Ebensowenig funktioniert das Löschen der letzten Form.
Der Effekt sollte eigentlich so sein, als hätte man in der Statusleiste auf ein Icon eines vorherigen Fensters geklickt.
Dabei erhält man ja auch das Fenster mit all seinen getätigten Einstellungen, und kein "sauberes" Fenster.
Danke schon mal im Voraus
Gruß druide
in dem Programm werden mehrere Fenster (SDI) kontrolliert nacheinander abgearbeitet.
Alles soweit , so gut.
Jetzt soll der Benutzer aber die Möglichkeit haben, ein oder mehrere Fenster zurück gehen zu können.
Dem Benutzer ist dabei klar, daß alle nach "hinten" (zurück) verlassene Fenster gelöscht werden müssen.
Falls in einem Fenster Daten verändert werden, müssen die neuen Daten in dem nachfolgenden Fenster
entsprechend den neuen Daten aus einer DB angepasst werden.
Habe mich etwas verzettelt, und benötige mal wieder einen kleinen TRITT.
Brainfuck-Quellcode
- Public Sub Ablaufkontrolle()
- nowForm = myForms(Zähler)
- ' wenn Form weiter
- If Status = DialogResult.OK Then
- nowForm.Hide()
- Zähler += 1
- ' suche nach der Form
- nowForm = ShowForm(myForms(Zähler))
- Else ' wenn Form zurück
- nowForm.Close()
- Zähler -= 1
- nowForm = myForms(Zähler)
- End If
- nowForm.Show()
- End Sub
- [line]--------------------------------------[/line]
- Public Sub Form_Liste()
- ' Aufzählung as new Dictionary(of Integer, Form)
- ' Elemente hinzufügen
- myForms.Add(0, frmInfo)
- myForms.Add(1, frmStart)
- myForms.Add(2, frmRasse)
- myForms.Add(3, frmEigenNeu)
- myForms.Add(4, frmAbenteurer)
- myForms.Add(5, frmFähigkeiten)
- myForms.Add(6, frmEnde)
- End Sub
- [line]---------------------------------------------[/line]
- Function ShowForm(ByVal FormName As Form) As Form
- Dim myAssembly As System.Reflection.Assembly
- Dim mytypes As Type()
- Dim Form As Form = Nothing
- ' die aktuelle Assembly zuweisen
- myAssembly = System.Reflection.Assembly.GetExecutingAssembly
- ' holt sich alle Typen die in der Assembly vorhanden sind
- mytypes = myAssembly.GetTypes
- For Each mType As Type In mytypes
- ' der aktuelle Typ von der Klasse Form abgeleitet und auch den richtigen Namen besitzt
- If mType.BaseType Is GetType(Form) AndAlso mType.Name = FormName.Name Then
- ' Wenn vorhanden, eine Instanz der Form herstellen
- Form = CType(Activator.CreateInstance(mType), Form)
- ' Schleife vorzeitig verlassen
- Exit For
- End If
- Next
- Return Form
- End Function
- [line]---------------------------------------------[/line]
- Public Function IsLoaded(ByVal formName As Form) As Boolean
- läuft = False
- ' alle geöffneten Forms durchlauden
- For Each part As Form In Application.OpenForms
- If part.Name.ToLower = formName.Name.ToLower Then
- läuft = True : Exit For
- End If
- Next
- Return (läuft)
- End Function
Wenn nur nach vorne abgearbeitet wird gibt es kein Problem mit den Forms.
Sobald aus einer Form nach hinten gesprungen wird, erhalte ich immer ein Neues(altes) Form.
Die neue Form zeigt dann auch natürlich nicht die schon mal gemachten Einstellungen.
Ebensowenig funktioniert das Löschen der letzten Form.
Der Effekt sollte eigentlich so sein, als hätte man in der Statusleiste auf ein Icon eines vorherigen Fensters geklickt.
Dabei erhält man ja auch das Fenster mit all seinen getätigten Einstellungen, und kein "sauberes" Fenster.
Danke schon mal im Voraus
Gruß druide