Form schließen nach zeit

Sunteufel

Grünschnabel
Hallo,
ich habe ein Progamm programmiert(mit splashscreen).
der Splashscreen soll sich nach 5 sekunden schließen.
Soweit hab ich das auch schon mit dem Timer un der esbar fertig, aber irgendwie will der dann net die neue Form öfnnen und die alte schließen.
mein code:
Code:
Public Class splashscreen

    Private Sub splashscreen_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ProgressBar1.Maximum = 30
        ProgressBar1.Minimum = 0
        ProgressBar1.Value = 30

        Timer1.Interval = 1000
        Timer1.Enabled = True

    End Sub
    Private Sub Timer1_Timer()

        Static intSekunden As Integer
zeit:
        intSekunden = intSekunden + 1
        ProgressBar1.Value = ProgressBar1.Value = -1
        If ProgressBar1.Value = 30 Then
            GoTo wenn
            '  GoTo wenn

            'GoTo zeit
        End If
wenn:
        web_edit.Visible = True

    End Sub
End Class

Wenn ich den splash screen ausführe, wird die progessbar anwendung auch ausgeführt, also der Balken bewegt sich von links nach rechts.
WEnn ich


Code:
web_edit.Visible = true
bei splashscreen load reinschreibe funktioniert das ganze.
Die Sprungmarke "wenn" hab ich nur so gestzt, wenn ich die befehle zum öffnen und schließen der forms geluch darein schreibe kommt genau das gleiche.

Wäre froh wenn ihr mir helfen könntet!
Danke im vorraus.

PS.: Ich arbeite mit Microsoft Visual Basic express edition 2008...Bei google hab ich auch schon nachgeguckt..nichs gefunden....
 

Nico Graichen

Erfahrenes Mitglied
Hi

Bitte kein GoTo mehr!
GoTo stammt aus längst vergangen Programmierzeiten und sollte nicht mehr genutzt werden.
VB.NET ist Objektorientiert und bietet aufgrund der .NET-Basis genügend Schleifen, Entscheidung usw.

Zum Problem:

Wo und wie rufst du denn die 2.Form auf?
Wo instantiierst du sie? Wo ist der Aufruf von Show?
 

Sunteufel

Grünschnabel
hi
hat nen bischen länger gedauert weil ich zieemliich viel zu tun hatte , sry....

die 2. Form rufe ich so auf:
Code:
2form.Visible = True
was meinst du mit aufruf von show und instantiieren= sry bin noch nen anfänger....
und nochne frage: Wenn ich versuche eine der beiden forms zu schließen, schließen sich beide....Woran kann das liegen?
 

Kyoko

Erfahrenes Mitglied
Unter "instantiieren" versteht man das Erstellen einer Objektinstanz.

Vielleicht wird dies mit folgendem Beispiel verständlicher:
Erstellst du mit "Dim objForm As Form" eine Variable, dann hast du nur eine Referenz auf eine Speicherstelle vom Typ Form, welche allerdings noch auf 0x00000000 zeigt. Erst wenn du mit "objForm = new Form()" den Konstruktor von Form aufrufst, wird das Objekt im Speicher erstellt und die Referenz objForm zeigt auf seine Speicherstelle.

Zur Show Methode: Die Klasse Form bietet eine Methode Show(). Diese wird verwendet, um ein Fenster anzuzeigen. Also am Beispiel von objForm: "objForm.Show()". Damit wird die Form objForm geöffnet.
 

Sunteufel

Grünschnabel
THX Danke ThX Danke

Genau das habe ich gesucht.....jez kann ich mich wieder erinnern weil hab ma vorner weile mit vb get und dann nur noch mit c++ und jez ers wieder angefangen mit vb.....THX

Aber noch eine frage:
Wenn ich mit
Code:
Me.Close
Versuche nur den splashscreen zu schließen, schleißt sich aber auch die andere Form...
 

Nico Graichen

Erfahrenes Mitglied
Hi zusammen

@Sunteufel
Bitte halte dich an die Netiquette!

@Peter86
Hide() blendet die Form nur aus. Quasi das gleiche wie Visible = false.

Wie mir scheint, hast du in der eine Form ein Referenz auf die andere. Wird die erste weggeräumt, geht die 2. mit.
Um das zu verhindern, musst du die Steuerung der Fenster außerhalb erledigen.
Entweder schreibst du dafür eine extra Klasse (sauber) oder implementierst du Logik in der Program-Klasse (unschön).
Weitere Alternative:
Du rufst nicht aus dem Splashscreen das eigentliche Programmfenster auf sondern umgekehrt. Zum Beispiel könntest du im OnLoad-Event den Splashscreen anzeigen. (in dem Fall mit ShowDialog um das Fenster modal zu öffnen)