Form öffnen und andere schließen mit Variablen übergabe in die neue Form

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von r3v0.

    Form öffnen und andere schließen mit Variablen übergabe in die neue Form

    Hey zusammen,

    Momentan habe ich das Problem bzw die Frage:
    Ich habe eine Klassenbibliothek erstellt, hier sind momentan nur 2 Klassen:
    Employee = Mitarbeiter Klasse
    Staff = Klasse mit einer arrayList Serialisiert und Deserialisiert sich automatisch jenachdem was gemacht wird.

    Das ganze Projekt soll eine Zeiterfassung werden, nun habe ich eine Login Form erstellt in der man sich einloggen kann,
    Wenn ein User sich einloggt wird der User in der Liste gesucht und falls gefunden wird das Passwort überprüft.
    Falls dieses Passwort ebenfalls korrekt ist wird der user in der Variable "epUser" gespeichert und dann soll das Hauptprogramm gestartet werden.

    Heißt Login Form schließen und Main Form öffnen. In der Main Form würde ich aber gerne den User der sich einloggt hat als Grundlage in einer Variable haben.

    Also die Daten die in epUser stehen möchte ich von der Login Form in die Main Form bekommen.

    Angedacht habe ich das ganze so das ich in der Main Form frmLogin.epUser aufrufe. Aber macht man das wirklich so?

    Müsste ich dann
    Main Form öffnen,
    Variable kopieren
    Login Form schliessen?

    Wenn ich nun:

    VB.NET-Quellcode

    1. Dim MainForm As New frmMain
    2. MainForm.Show()


    mache bleiben beide Fenster offen. Und ich weiß nicht so wirklich wie ich die erste Form schliessen soll...

    Ich hoffe es ist nicht zu umständlich erklärt. Falls doch werde ich gerne versuchen es anhand von Fragen nocheinmal zu schildern!

    [edit]
    Ich habe gerade den Aufruf so erweitert:

    VB.NET-Quellcode

    1. Dim MainForm As New frmMain
    2. MainForm.Show()
    3. Me.Hide()


    dann habe ich in die MainForm folgendes reingesetzt:

    VB.NET-Quellcode

    1. Private Sub frmMain_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    2. Application.Exit()
    3. End Sub


    Das funktioniert zwar, aber ist das wirklich der richtige weg?

    [Edit 2]
    Ich hab das ganze dann mal geändert schuldigung

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „r3v0“ ()

    Hallo r3vo,

    da ich hier nicht immer wieder neue Threads aufmachen möchte, habe ich mir gedacht für meine Anfänger Fragen ein eigenen Thread zu erstellen.

    Falls keine Aktuelle Frage besteht setze ich den Thread als Erledigt.

    dieses Vorgehen wird so nicht tolleriert werden.

    Ein Thema pro Frage.

    Gruss

    mikeb69
    zb
    (in frmMain)

    VB.NET-Quellcode

    1. Private _data As Object
    2. Public Function ShowWithParams(ByVal CallForm As Form, ByVal SomeData As Object)
    3. _data = SomeData
    4. ' use data to fill some data on the form for example
    5. Me.Show()
    6. If Not CallForm Is Nothing Then
    7. CallForm.Hide()
    8. CallForm.Close()
    9. End If
    10. End Function


    Und dann in der ersten Form zb:
    dim f as new frmMain
    f.ShowWithParams(Me, blup)

    picoflop schrieb:

    dim f as new frmMain
    f.ShowWithParams(Me, blup)

    picoflop schrieb:

    zb
    (in frmMain)

    VB.NET-Quellcode

    1. Private _data As Object
    2. Public Function ShowWithParams(ByVal CallForm As Form, ByVal SomeData As Object)
    3. _data = SomeData
    4. ' use data to fill some data on the form for example
    5. Me.Show()
    6. If Not CallForm Is Nothing Then
    7. CallForm.Hide()
    8. CallForm.Close()
    9. End If
    10. End Function


    Und dann in der ersten Form zb:
    dim f as new frmMain
    f.ShowWithParams(Me, blup)


    Hey,

    hier kommt das Problem wieder:
    Wenn ich CallForm.Close() ausführe beendet sich die Komplette Anwendung.
    Deswegen dachte ich ein .Hide() und dann bei der anderen Form ein Application.Exit()

    grüße
    Hey,

    ich habe heute ein bisschen weiter probiert, nun habe ich ein weitere Form mit:
    .ShowDialog aufgerufen.

    Also das eine Form aufgerufen wird und die andere nicht mehr benutztbar ist.

    Doch leider fehlt mir hier die Idee wie ich sauber die Daten übergebe!

    ein Override wäre doch um die Funktion komplett zu überschreiben dann fehlen mir aber die Einstellungen die das normalerweise macht Humtz