Form1 hide funktioniert nicht

  • VB.NET

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

    Form1 hide funktioniert nicht

    Hallo
    habe grad nen total blödes Problem. Denke es ist einfach zu lösen. Folgender Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If My.Settings.accespw = String.Empty Then
    3. MsgBox("Bitte erstellen Sie ein Kennwort, mit dem Sie in Zukunft auf das Programm zugreifen möchten!", MessageBoxIcon.Information, "Passwort erstellen")
    4. If DialogResult.OK Then
    5. Me.Hide()
    6. register.Show()
    7. End If
    8. Else
    9. Me.Show()
    10. End If
    11. End Sub


    Nun ist es so, wenn man in der MsgBox auf OK klickt, zeigt er zwar die register.vb an aber er versteckt die Form1 nicht, obwohl ich sage er soll Me.Hide machen. Jemand eine Idee woran das liegen könnte?
    Hoffe auf Hilfe

    Gruß
    shocK
    In der Form_Load funktioniert kein Hide, da die Form da noch nicht sichtbar ist, erst danach wird sie sichtbar.
    Du könntest z.B. das VisibleChanged-Event nutzen, allerdings solltest Du da ein Flag setzen, wann sie wieder sichtbar sein darf:

    VB.NET-Quellcode

    1. Private start As Boolean = True
    2. Private Sub Form1_VisibleChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.VisibleChanged
    3. If start Then
    4. Me.Hide()
    5. End If
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Problem liegt daran, dass das ganze im Form_Load passiert. Die Form ist zu diesem Zeitpunkt noch nicht geladen.
    Nutze nicht das Load Event für derartige Abfragen sondern das "Shown" Event. Dieses Event wird 1 mal nach erstmaligen Aufscheinen der Form geballert.

    Im Load verwendet man eher Sachen zum initialisieren zB.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Danke an alle für die Hilfe. Problem gelöst :)


    P.S

    Nutze Message.Show() statt MsgBox() (MsgBox ist ein Überbleibsl von VB6)

    Geht leider nicht!


    Quellcode

    1. "Show" ist kein Member von "System.Windows.Forms.Message"



    Edit: Grad gefunden wie es richtig ist: MessageBox.Show ;)

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