probleme bei VBS
Prinz
- sonstiges
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
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?
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:
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