[VB.Net] Loading Screen maken

Pagina: 1
Acties:

  • F-Tim
  • Registratie: November 2003
  • Laatst online: 04-04 21:15
Aloha, ik kom m'n eieren hier maar weer eens kwijt.
In de hoop dat iemand me hier weer een bump de goede weg op kan sturen.

De situatie is als volgt... Ik heb een applicatie, welke verschillende usercontrols in 3 panels laadt, (Left, Center, Bottom). Echter als ik het hoofdscherm laadt duurt dit eventjes. Als dit gedaan wordt als de applicatie gestart wordt is dat niet zo'n ramp aangezien de applicatie dan een beetje langer erover doet om op te starten, echter als ik vanuit een submenu terugmoet naar het hoofdscherm... duurt het eventjes. Eerst wordt het beeld dan grijs (vanwege het Disposen van de andere Usercontrols welke dan niet meer nodig zijn), en dan komen de gewenste usercontrols stapsgewijs op het scherm... je kunt duidelijk een opbouw ervan zien. Ik denk niet dat ik erbij hoef te vermelden dat dit niet sierlijk is ;)

Nu heb ik m'n code al geoptimaliseerd, en is er duidelijk al een positief verschil merkbaar, echter zit ik nog niet aan de gewenste situatie, en ik kan de code niet verder optimaliseren. Ik heb ook al componenten vervangen door andere componenten welke beter geschikt zijn voor bepaalde doeleinden, echter oogt het nog altijd een beetje langzaam.

Mijn idee was om nu heel kort een laadschem te tonen. Onder water het andere scherm in te laden, en in 1x te tonen. Echter weet ik niet in hoeverre dit goed te implementeren valt, aangezien ik mijn procedure's tijdens de Load van een doe uitvoeren. Ik had zelf wel al een idee om bij het "teruggaan" naar het hoofdscherm, een kleine animatie te laten zien in een soort van popup. Echter heb ik geen idee hoe ik het renderen van het form dan onder water kan doen. (De Load wordt immers door de Show aangestuurd :P)

Wellicht dat de oplossing simpel is, en dat ik door een hele dag stoeien ermee het over het hoofd zie, maar ik weet het ff niet meer.

Het laden van een Usercontrol doe ik als volgt:
code:
1
2
3
4
5
6
Andere_Usercontrols.Dispose

ucDeze = New ucGewenst
ucDeze.Size = BerekenSize
ucDeze.Parent = pnlCenter
ucDeze.Show()

Ik neem aan dat dit een gebruikelijke manier is om een Usercontrol in een panel te laden. (Als iemand een efficientere manier weet, ik sta open voor suggesties ;)) Echter wil ik de volgende situatie.. Toon Loading-screen...render ucDeze....Show ucDeze.... Haal Loading-screen weg.

Iets dat me nu te binnen schiet is... eerst de Show aanroepen, dan Dispose de anderen, en dan de ucDeze.Parent = pnlCenter... echter lijkt me dit ook geen nette oplossing, en dan weet ik nog altijd niet hoe ik een kleine animatie als Loading-screen popup kan tonen....

Zucht, hopelijk ben je niet verveeld nu na het lezen hiervan ;) Thanks alvast!

Wanna play?


  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08-2025
lijkt mij dat je met Threading wel iets moet kunnen doen.

binnenkort een hele dikke casemod :P


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

als die user controls altijd aanwezig zijn, maak deze dan aan in de constructor ipv de Load event
bovendien moet je
C#:
1
2
3
pnlCenter.Controls.Add(ucDeze)
ipv
ucDeze.Parent = pnlCenter;

doen.

Als je ze dynamisch laadt, dan denk ik dat er niet veel anders aan te doen is behalve een thread opstarten.

ASSUME makes an ASS out of U and ME