Prinz: probleme bei VBS

moin moin

Ich versuche gerade mir VBS selbst beizubringen und arbeite jetzt ein Tutorial durch, dass aber scheinbar ein wenig komisch ist^^

Vielleicht bin ich auch einfach noch zu doof aber da wird mir folgendes gesagt:

ich habe einen Splashscreen, der jetzt, sobald er geladen wird  die Hauptform schon einmal laden soll, mit dem befehl :

Private Sub Form_Load()
        Splashscreen.Show
        ------>  Load HauptForm  <-------
    End Sub

Ich kriege es einfach nicht hin dabei keinen FEhler zu bekommen. der sagt mir ich soll das mit RaiseEvent Load Hauptform machen aber dann krieg ich nen anderen Fehler der mir folgendes sagt: "Abgeleitete klassen können keine Basisklassenereignisse auslösen"

Auch der im nächsten Kapitel benutze Befehl Unload scheint nur mit RaiseEvent zu funktionieren, aber da werden zwei Parameter erwartet als zweites : e As System.EventArgs.

leider sagt mir das tutorial nicht was dort für Werte erwartet werden.

Ein besseres Tutorial hab ich auch noch nicht gefunden am besten währe eines das mit Microsoft Visual Basic 2005 Express Edition arbeitet, da ich mich dann nciht umstellen müsste....

Danke schon mal

  1. ich habe einen Splashscreen, der jetzt, sobald er geladen wird  die Hauptform schon einmal laden soll, mit dem befehl :

    Private Sub Form_Load()
            Splashscreen.Show
            ------>  Load HauptForm  <-------
        End Sub

    Ich habe "Splashscreen" jetzt nicht genau verstanden, aber kannst Du nicht ein MDI(multi doc interface)-Projekt anlegen mit einem Stammfenster und in dessen Load-Ereignis gleich ein Kindfenster (bzw. ein "Splashscreen") hochkommen lassen?

  2. Hallo,

    .Net klassen wie auch Forms (egal ob in VB - und übrigens hat das über-
    haupt nichts mit VBS zu tun) bieten oft Events and, auf die man einee
    Callback Methode setzen kann.

    Forms haben z.b. Events wie Load, Closing, Closed. Hinter diesen Events
    verstecken sich Delegates mit bestimmten Signaturen. Diese Signaturen müssen von den Callback Methoden implementiert werden und sind häufig
    in der Form

    EventDelegate(ByVal sender as object, ByVal e as System.EventArgs)

    Eine Callback-Methode muss dann also ebensolch eine Signatur haben

    Private Sub FormLoadCallback(ByVal sender as object,
      ByVal e as System.EventArgs) Handles MyBase.Load
       'your code
    End Sub

    Wichtig ist das "Handles MyBase.Load", wobei "MyBase" das VB-Keyword
    für die System.Windows.Forms.Form Basisklasse ist wovon deine eigene
    Fenster-Klasse abgeleitet ist. "Load" ist dabei der Event.

    Jetzt zu deinem eigentlichen Problem: SplashScreens. Es ist sehr davon
    abhängig, was du genau auf dem SplashScreen machen willst (z.b. einen
    virtuellen Fortschrittsbalken anzeigen oder nur ein statisches Logo),
    denn ein Splashscreen ist ebenso ein Formular wie dein eigenes Haupt-
    Formular. Beide Fenster konkurrieren in der im Hintergrund laufenden
    Instanz von System.Windows.Forms.Application mit ihren Messageloops,
    wer wann was bearbeiten darf und können sich unter Umständen gegenseitig
    blockieren mit ihren Messages wenn sie unstet in einem gemeinsamen
    oder eigenen Threads herumvegetieren. (Sehr unschöner Effekt).

    Den Splashscreen solltest du deshalb in einem separaten Thread von
    der Main-Methode aus starten:

    Dim T as new Thread(AddressOf SplashScreenShowMethode)

    Private Shared Sub SplashScreenShowMethode()
      SplashScreenWindow.ShowDialog 'oder ähnlich je nach Bedarf
    End Sub

    Die Kommunikation zwischen dem SplashScreen und dem Hauptfenster,
    dass der SplashScreen auch wieder gekillt wird, wenn das Hauptfenster
    geladen ist (Form_Load(...) Handles MyBase.Load) musst du dann selbst
    asynchron mit BeginInvoke und Delegates threadsicher gewährleisten.

    Du solltest dich also mit folgender Materie vertraut machen:

    • Events und Delegates
    • Multithreading / Thread-sichere Methodaufrufe

    Hast du schon mal versucht bei Google nach: "VB.Net Splashscreen" gesucht, da kommt als 3. Ergebnis bei mir:  http://www.pearson.ch/download/media/9783827320070_SP.pdf

    Ciao, Frank