Splashscreen laden und programmmstart erst ausführen wenn ein ablauf beendet ist

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Splashscreen laden und programmmstart erst ausführen wenn ein ablauf beendet ist

    Hallo ich habe folgendes problem!

    Ich möchte einen splashscreen verwenden und eine progressbar einbauen (ich möchte auch ein internettest machen aber das ist nebensächlich mit der progressbar ist es einfacher zum erklären!)
    Also der splashscreen startet und die progressbar fängt an sich zu füllen durch den timer!

    Timercode:

    VB.NET-Quellcode

    1. ProgressBar1.Value += 1


    Form.load Code:

    VB.NET-Quellcode

    1. Timer1.Start()


    wie kann ich verhindern dass sich der splashscreen schließt bevor die progressbar auf value = 100 ist (also fast am ende)?
    wenn ich das programm starten dann lädt der splashscreen und wenn die progressbar bei ungefähr 30% ist schließt sich der splashscreen und die form 1 wird angezeigt! Dies soll aber erst geschehen wenn die progressbar voll ist!

    Ich werde dann einen internettest durchführen und das programm soll erst starten wenn dieser test durchgeführt ist, nur ich weiß nicht wo ich den code wie einbauen muss dass das programm erst richtig startet wenn der ablauf (in diesem beispiel progressbar1) beendet ist!

    Danke schonmahl im vorraus
    MFG Ricardo

    EDIT: Bitte unten fortsetzen! Ich habe es falsch formuliert! Die Progressbar ist eine "Methaper"

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „riji01“ ()

    Sowas ist sinnlos. Du willst den Benutzer allen Ernstes mit einer künstlichen Progressbar aufhalten? Warum?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Der Sinn einer Progressbar ist es, dem Nutzer zu zeigen, wie viel er bereits geladen hat, bzw. wie lange er noch warten muss.
    D.h. es macht höchstens Sinn in deiner Form-Load-Methode zwischen den einzelnen Ressourcen(z.B. Bilder,Musikdateien etc.)
    die geladen werden, deine Progressbar "wachsen" zu lassen.
    In diesem Fall erscheint die Form auch erst denn, wenn die Progressbar voll ist( insofern du insgesamt 100 Einheiten addiert hast)
    Das ist sinnlos, lade was geladen werden muss im Form Load Ereignis. Ein Splashscreen macht das Programm auch nicht schöner ;)

    Gruß
    Youtube Info Library 2013 jetzt im Showroom.

    SRY Ich habe es falsch formuliert die Progressbar ist eine "metapher"

    SRY mein Fehler ich habe es falsch formuliert!

    Die Progressbar ist nur zur einfachen problemlösung als "metapher"!
    Z.B. Die lösung ist den timer bei ... einzubinden dann wird der start erst dann ausgeführt wenn sie aufgefüllt ist!

    Anstelle der Progressbar kommt dann ein internettest (Ob Internetverbindung vorhanden ist) und ein updatetest!

    Sry
    Manawyrm

    riji01 schrieb:

    aber was ist denn die lösung Bitte?
    Ein SplashScreen wird verwendet, wenn eine Initialisierung länger dauert UND die GUI nicht bedient werden können soll UND die GUI nicht einfrieren soll.
    Nimm eine ProgressBar und gib ihr Style = Marquee, das sieht schick aus und stellt Geschäftigkeit dar.
    Starte in einem separaten Thread Deine Was-auch-immer-Suche und stell sicher, dass bei Nicht-Erfolg der Thread nach einer gewissen Zeit (TimeOut) abgebrochen wird.
    Falls Du einen hast, gib dann dem SplashScreen ein Event, dass er feddich ist.
    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!
    Ich möchte einen splashscreen starten und während dieser angezeigt wird eine internetverbindung überprüffen und mehr! (Updates,...) Alerdings möchte ich verhindern dass die form 1 angezeigt wird wenn diese vorgänge noch nicht beendet sind erst wen dies fertig ist darf die form 1 angezeigt werden das funktioniert aber nicht!

    riji01 schrieb:

    das funktioniert aber nicht!
    Mit welchem Code?
    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!

    riji01 schrieb:

    Alerdings möchte ich verhindern dass die form 1 angezeigt wird wenn diese vorgänge noch nicht beendet sind

    Das verhinderst du zuverlässig, indem du deine Lade-Vorgänge im Konstruktor von Form1 ausführst, und zwar im MainThread.
    Solange der Mainthread damit beschäftigt ist, kann das Form nicht anzeigen, aber sobald fertig, wird angezeigt, und der Splash verpisst sich.

    Problematisch beim Auftreten von Fehlern, weil Code im Form-Konstruktor wird nicht gescheit gedebugt.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub New()
    3. InitializeComponent()
    4. 'Your code here!
    5. End Sub
    6. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    RodFromGermany schrieb:

    Mit welchem Code?
    ist auch noch nicht beantwortet.
    @riji01: Dies hier ist Dein Thread, Du bist hier der Moderator.
    Wenn Du willst, dass Dir geholfen wird, solltest Du aktiv mitarbeiten und unsere Fragen bestmöglich beantworten.
    Wenn Du hier weiter so an Deinem Problem mitarbeitest, kann es schnell passieren, dass Du diverse IgnoredUser-Listen befüllst.
    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!
    Erstens Es tut mir wirklich leid mein internet hat nicht funktioniert folglich hatte ich genug zeit dieses problem zu lösen!

    Ich habe eine insgesamt 3 formen!

    1.Form splashscreen
    2.Form seriennummerabfrage
    3.form programm

    Im splashscreen wird überprüfft ob die seriennummer bereits eingegeben ist wenn sie schon aktiviert wurde dann geht es zur fom 3 sonst zur form 2
    Ich habe lange darüber nachgedacht und halte es so für am einfachsten! sonst wird es für einen anfänger wie mich sehr kompliziert und komplexx!

    Danke an alle die mir geholfen haben