Wenn Wert = False Dann andere Form anzeigen im Form Load Event

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Wenn Wert = False Dann andere Form anzeigen im Form Load Event

    Hallo,

    ich habe folgendes Problem:

    Im Form_Load Event prüfe ich, ob ein Wert False oder True ist.
    Wenn er False ist, soll sich die Form schließen, also Me.Hide() und eine andere Form soll angezeigt werden.
    Es zeigen sich aber beide Formen.

    Wie ändere ich dies?

    Liebe Grüße

    Weyrn
    Nur mal so in den Raum geworfen:

    Schon mal folgendes ausprobiert?

    Me.Visible = False

    Ergänzung:

    Müsste wie folgt lauten, wenn man Form1 nicht ganz schließen will, sondern halt nur unsichtbar machen:

    VB.NET-Quellcode

    1. Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
    2. Me.Visible = False
    3. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thias“ ()

    Hi,
    wenn du in den Programmeigenschaften auf "Modus für das Herunterfahren -> Beim Schließen des letzten Formulars" umstellst,
    geht es damit:

    VB.NET-Quellcode

    1. Dim Test As Boolean = False
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim frm2 As New Form2
    4. If Test = False Then
    5. frm2.Show()
    6. Me.Close()
    7. End If
    8. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CFire“ ()

    Ihgitihgitihgit
    Ich würde das Anwendungframework deaktivieren, dann eine Klasse mit dem namen "Program.vb" erstellen mit folgendem inhalt:

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Friend NotInheritable Class Program
    3. Private Sub New()
    4. End Sub
    5. Public Shared Sub Main(ByVal args As String())
    6. Application.EnableVisualStyles()
    7. Application.SetCompatibleTextRenderingDefault(False)
    8. 'Dein code zur auswahl der form
    9. Application.Run(New Form1())
    10. End Sub
    11. End Class

    Wer Rechtschreibfehler findet darf sie behalten :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „WeLoveBurgers“ ()

    Was ist an meiner Lösung falsch?

    Sein Wunsch war es doch in der FormLoad abzufragen ob True oder False und dann das eine zu schließen und das andere zu öffnen.
    Oder hab ich das falsch verstanden?

    Nachtrag:
    Nicht falsch verstehen.
    Ich bin selbst erst seit Januar im Thema daher wäre es interessant für mich zu wissen, was daran falsch ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CFire“ () aus folgendem Grund: Nachtrag

    naja, du erstellst 2 Forms, obwohl du nur eines anzeigen willst. Das erste muss quasi als Ungeborenes bereits Selbstmord begehen.
    Ist bisserl unlogisch, aber funzen tut das auch.

    WeLoveBurgers' Lösung habich noch bischen breitgetreten: AnwendungsFramework deaktivieren

    Wobei ich statt der Notinheritable Class halt gleich ein Modul nehme, aber das ist nicht so relevant.
    @CFire Jou.

    Weyrn schrieb:

    Me.Hide()
    verpufft, da die Form zu diesem Zeitpunkt sowieso invisible ist.
    Schließe die Form mit Me.Close().
    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!
    Hab nochmal ne Frage zu diesem Thema.
    Ich hab jetzt mein Login genau so gelöst, dass ich das AnwendungsFramework deaktiviert habe und nach erfolgreichem Login das Programm mit meiner HauptForm starte.

    Wie komme ich wieder zurück zum LoginForm?
    Sobalt ich HauptForm schließe, beendet sich das Programm
    ( was auch logisch ist, wenn ich es mit Application.Run(New HauptForm()) starte ).

    Ich will im Prinzip ein "Abmelden" Button machen, der eben wieder auf die LoginForm zurück führt.
    Dadurch, dass ich ja das Programm mit der HauptForm gestartet habe, beendet sich logischerweise das Programm sobalt ich die HauptForm schließe.

    Ist es irgendwie möglich die, ich nenne es mal "Abhängigkeit" wieder an meine LoginForm zu übergeben?

    Gruß
    Wie müsste die Aussehen?
    Ich glaube, ich bräuchte nen kleinen Denkanstoss ?(

    Das ist ein Ausschnitt aus meinem Modul:

    VB.NET-Quellcode

    1. Private Sub Login()
    2. Dim frmLogin As New frmLogin
    3. Dim Login = frmLogin.ShowDialog()
    4. Dim Haupt As New frmHaupt
    5. Select Case Login
    6. Case DialogResult.OK
    7. Application.Run(Haupt)
    8. Case DialogResult.Cancel
    9. Application.Exit()
    10. End Select
    11. End Sub
    Mir ist bewusst, das dort keine schleife drin ist =)
    Ist auch mein Code bevor ich hier gefragt habe.

    Ich komme trotzdem nicht auf eine Lösung.
    Schleifen die ich kenne:

    Do... Loop
    Do While...
    For...
    For Each...
    While...

    Um an die Lösung zu kommen muss ich doch abfragen ob FormHaupt aktiv ist und wenn nicht soll FormLogin die "Trägerform" werden.
    Das müsste doch mit der While Schliefe funktionieren.
    Oder?

    Nachtrag:
    Am Liebsten wäre es mir wenn ich irgendwie wieder die Login() Prozedur in meinem Modul aufgerufen werden könnte.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CFire“ ()

    Vielen dank,
    dann brauche ich ja das Application.Run gar nicht?
    An dem hab ich mich die ganze Zeit aufgehangen...

    Da hätte ich ewig gebraucht bis ich auf die Idee gekommen wäre, dass so zu probieren.

    DANKE

    Gruß

    CFire schrieb:

    dann brauche ich ja das Application.Run gar nicht?
    Das ist eine Console-Anwendung, die ein WinForm öffnet.
    Application.Run ist eine WinForms-Anwendung.
    Probiere beides aus, dann siehst Du den Unterschied.
    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!

    CFire schrieb:

    dann brauche ich ja das Application.Run gar nicht?
    Wenn ich überlege - interessante Frage, ob man

    VB.NET-Quellcode

    1. frm.ShowDialog()
    2. frm.Dispose
    des MainForms ersetzen könnte durch

    VB.NET-Quellcode

    1. Application.Run(frm)
    Ich hab noch nie ein Application.Run() in derselben Application mehrmals aufgerufen mit verschiedenen Forms.
    Aber vonne Syntax spricht nix dagegen, also wenn MS Application sauber programmiert hat, sollte das gehen.