Visual Basic: Form2 nach 5 Sekunden automatisch schliessen lassen

  • Allgemein

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Bernd.

    Visual Basic: Form2 nach 5 Sekunden automatisch schliessen lassen

    Hallo

    Ich will dass meine Windows Form2 sich automatisch nach 5 Sekunden schliesst, habe schon 10000 von Codes versucht.
    Ich dachte eigentlich mit dem Code hier musste es gehen:


    Quellcode

    1. Using dlg As New Form2
    2. Me.Hide()
    3. dlg.ShowDialog()("Wait 5 seconds", 5, "Title")


    Geht es aber nicht
    ?(

    Kann mich jemand berichtigen?
    :)


    Mfg
    Sinnner
    Mach einen Timer in deine Form rein, stell den Intervall auf 5.000 sek und schreib dann rein, dass sich die Form closen soll.


    Außerdem habe ich dich gerade eben schon darauf hingewiesen, dass du keine solche Schriftgröße verwenden sollst!

    FloFuchs schrieb:

    poste mal deinen ganzen code.. vielleicht finden wir den fehler.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. ProgressBar1.Increment(1)
    4. ProgressBar1.Maximum = 150
    5. If ProgressBar1.Value = 149 Then
    6. ProgressBar1.Value = 150
    7. Timer1.Stop()
    8. MsgBox("Updates has been succesfully installed !", vbOKOnly + (vbInformation))
    9. Using dlg As New Form2
    10. Me.Hide()
    11. dlg.ShowDialog()
    12. Me.Hide()
    13. End Using
    14. End If
    15. End Sub
    16. Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
    17. End Sub
    18. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    19. If MsgBox("New Update is available. Do you want to download?", vbYesNo + vbQuestion) = vbYes Then
    20. Timer1.Start()
    21. End If
    so und was PAssiert nicht? Und sollte passieren? Wo zum beispiel erhöst du denn deine Progressbar?
    Warum versteckst du zweimal dein MainForm?
    Btw Option Strict ON!!
    Zeile 9+23?? wie solll das funktionieren?

    Sinner schrieb:

    MsgBox("Updates has been succesfully installed !", vbOKOnly + (vbInformation))

    Sinner schrieb:

    If MsgBox("New Update is available. Do you want to download?", vbYesNo + vbQuestion) = vbYes

    Du musst dich schon für einen Style entscheiden.
    Nunja... ticken wird er ja öfter, der timer wird ja erst bei 150 gestoppt. Achja... ne Msgbox hat in der Rückgabe übrigends im QuestionStyle das Ergebn is vbOK und nicht vbyes... dh Dein update wird eh nie gestartet.
    richtig.
    dennoch würde ich das form-schließen nicht in abhängigkeit des Progressbar-values machen.
    die progressbar prozentual gefüllt, lässt sich doch schön ausrechnen, wenn man die ticks vorher schon kennt.

    mfg OnkelR

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

    ;) Ich würde das ganze auch nicht so machen. Wie du weiter oben lesen kannst. (Btw. den nutzer sinnlos 5 Sekunden warten lassen ist soweiso...) Generell finde ich sowieso, dass sein Code nicht zur Fragestellung in Post #1 passt. Aber syntaktische Verbesserung von dem was er da treibt ist immerhin schon mal ein Weg ;)
    Also:

    VB.NET-Quellcode

    1. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim erg = MsgBox("New Update is available. Do you want to download?", vbQuestion)
    3. If erg = vbOK Then
    4. If Not bgw.IsBusy Then
    5. bgw.RunWorkerAsync()
    6. End If
    7. End If
    8. End Sub
    9. Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
    10. Using dlg As New Form1
    11. dlg.Show()
    12. For i = 1 To 150
    13. System.Threading.Thread.Sleep(33)
    14. dlg.ProgressBar1.Value = i
    15. Next
    16. End Using
    17. End Sub
    18. Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
    19. MsgBox("Updates has been succesfully installed !", vbInformation)
    20. End Sub
    Wenn eine Form sich selbst schließen soll, mach das mit eienem nichtmodalen Dialog (dlg.Show()), und das Schließen organisiert die Form allein.
    Timer.Start() in die Form_Load, Timer_Stop() und Me.Close in die Timer_Tick() der 2. Form.
    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 Update sollte ein Event feuern. Danach wird die Form geschlossen.
    Wie soll das denn funktionieren.
    Form 2 bleibt 5 Sekunden auf und wird dann geschlossen.
    Was ist wenn das Update mal langsamer ist ?

    Überdenke das ganze Konzept.

    Bernd