startform erst anzeigen wenn splashscreen geschlossen wurde

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    startform erst anzeigen wenn splashscreen geschlossen wurde

    hallo ihr lieben,

    ich programmiere schon seit einiger zeit in vb und hab mich mal an den splashscreen gewagt und promt tauchte ein problem auf.

    ich habe einen splashscreen (splashscreen1.vb) und ein startformular (form1.vb) erstellt und im projekteigenschaften-editor entsprechend eingestellt.

    die anzeigedauer des splashscreens habe ich in der datei applicationevents.vb mit folgendem code definiert:

    VB.NET-Quellcode

    1. Namespace My
    2. Partial Friend Class MyApplication
    3. Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean
    4. 'Anzeigedauer des Splashscreens auf eine beliebige Zeit setzen,
    5. 'in diesem Beispiel auf 15 Sekunden.
    6. Me.MinimumSplashScreenDisplayTime = 15000
    7. Return MyBase.OnInitialize(commandLineArgs)
    8. End Function
    9. End Class
    10. End Namespace

    funktioniert auch alles soweit.
    das unschöne ist nur, dass die startform bereits angezeigt wird, bevor der splashscreen geschlossen ist.
    und genau hier ist das problem. ich möchte den splashscreen erst geschlossen haben, bevor die startform angezeigt wird.
    weis jemand dazu einen rat?
    lg arcus
    hi arcus

    du könntest die form1 auch minimiert starten lassen also im formload ereignis

    VB.NET-Quellcode

    1. Me.WindowState = FormWindowState.Minimized


    und dann nachdem dein splashscreen sich schließt den windowstate wieder auf normal setzten
    danke für die schnelle antwort.

    den splashscreen als statrformular festlegen hat nicht funktioniet, dafür aber das minimierte laden der form.

    problem nur, dass die form minimiert bleibt bis ich in der taskleiste darauf klicke.

    habs mit folgendem code probiert:

    VB.NET-Quellcode

    1. Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
    2. Me.WindowState = FormWindowState.Minimized
    3. End Sub
    4. Private Sub Form1_Focus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.GotFocus
    5. Me.Show()Me.WindowState = FormWindowState.Maximized
    6. End Sub

    das maximieren klappt mit und ohne me.show() nicht.
    oder nimm einfach noch einen timer dazu der beim formload ereignis zum laufen anfängt und dann nach
    einer gewissen zeit eben zum ende des splashscreens dann deine form1 auf maximized bzw normal setzt
    der timer sollte dann aber wieder ausgemacht werden , weil sonst die form immer in dem intervall maximiert wird
    etc : ) is dann nich so toll

    mfg BeNe
    @arcus:
    Ich habe übrigens deine allererste Variante ausprobiert, das is ja ein Sample von MSDN, mit dem die Zeit für den Splash festgelegt werden kann. Bei mir funzt es ganz normal. Nach Ablauf der Zeit kommt die Startform. Du hast ja in den Proj-Eigensch. die Form für den Splash eingetragen und die andere Form als Startform, richtich? Hast du deine Startform im Designer auch als Windowstate.Normal eingetragen?

    Wobei es offensichtlich einfacher ist, den "Splash" als Stortform festzulegen und mit einem Timer zur nächsten Form zu wechseln. Das hat einige Vorteile.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    @vatter:

    stimmt, das mit der anzeigedauer ist ein msdn-sample, spielt ja auch keine rolle.

    der splash ist als begrüsungsbild und die form1 als startform im projekt-explorer eingestellt.

    die windowsstate-eigenschaft der startform ist auf normal gestellt.



    @all:

    da mir visualstudio2005 für den splahscreen kein eventhandler "close" bereitstellt, habe ich es mit "formclosed, formclosing und deactivate probiert und läuft auch nicht.



    die variante mit dem timer habe ich erstmal hinten angestellt, da ich damit bis dato noch nix am hut hatte, und mich erstmal etwas in das thema einarbeiten muss, bevor ich das probiere.
    da die variante mit dem maximieren aus dem close-event des splashscreens nicht funktioniert hat, habe ich mich nun notgedrungen in die timer-geschichte eingelesen und da etwas zusammengebaut, was sicherlich noch eleganter zu lösen ist, aber es funktioniert. und das ist die hauptsache.

    danke an alle, die an der sache mit geholfen haben.
    Ich möchte kein neues Thema eröffnen deswegen schreibe ich nun hier.
    Also mein Problem ist folgendes: Wenn ich ein neues Projekt als Windowsform starte und dann ein Splashscreen als Begrüßungsbildschirm einstelle, dann funktioniert es wie ich es will. Splashscreen erscheint, nach dem Splashscreen dann z.B. form1

    Aber! Nun habe ich bereits ein Projekt das fast zu ende programmiert ist. Wenn ich jetzt ein Splashscreen einbaue, erscheint der Splashscreen mit der form gemeinsam. Hat jemand eine Ahnung warum? Wie kann ich es lösen?
    Deine Idee ist gut Vatter, aber wie funktioniert diese?

    Komm schon das ist nicht dein Ernst :pinch:
    Projekteigenschaften->Startformular, hier SplashScreen Form auswählen. Wie das mit dem Timer geht weißt du hoffentlich


    link_275
    Hello World

    link_275 schrieb:

    Deine Idee ist gut Vatter, aber wie funktioniert diese?

    Komm schon das ist nicht dein Ernst :pinch:
    Projekteigenschaften->Startformular, hier SplashScreen Form auswählen. Wie das mit dem Timer geht weißt du hoffentlich


    link_275


    Doch ist mein ernst! Und für meine Seite wäre es interessanter eine gescheite Hilfe zu bekommen als Herablassungen. Falls du mir einen Code Beispiel Posten könntest wäre ich dir dankbar.
    Selbstverständlich sollst du Hilfe bekommen, aber solcher Art dann demnächst bitte in's Grundlagen-Forum posten ;)

    Also, du legst wie gesagt in deinen Projekteigenschaften unter Startformular fest, dass dein Splash zuerst gestartet wird. Als nächstest gehst du in der DesignerAnsicht zu deinem Splash. Dort addest du einen Timer. Im Splash1_Load Event fügst du folgenden Code ein

    VB.NET-Quellcode

    1. Timer1.Start()


    Nun selektierst du den Timer, indem du Ihn anklickst. Rechts in den Eigenschaften lässt du "Enabled" auf False, den Intervall stellst du auf 1000, also in 1-Sekunden schritten wird dann gezählt(1000ms = 1s).
    Nun klickst du doppelt auf den Timer um in der CodeAnsicht im Timer1_Tick Event zu landen. Dort schreibst du dann eine Zeile darüber(also im Nichts sozusagen, auf globaler Ebene, diesen Code:

    VB.NET-Quellcode

    1. Private Zaehler As Integer = 0


    Und im Timer1_Tick Ereignis schreibst du dann diesen Code

    VB.NET-Quellcode

    1. Zaehler += 1
    2. If Zaehler = 9 Then
    3. Me.Close()
    4. Form1.Show()
    5. Timer1.Stop()
    6. End If


    In den Projekteigenschaften musst du bei "Modus für das Herunterfahren" die Option "Beim schlie0en des letzten Formulars" auswählen

    Im nächsten Teil erfährst du, wie der Bedanken-Button zu verwenden ist xD


    link_275 :thumbup:
    Hello World