[C#] Programma eerst laten zien voordat er iets gedaan wordt

Pagina: 1
Acties:

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Ik heb een formulier met daarop een listview. En daaronder een progressbar.

Nu roep ik het programma met "bla.exe D:\" aan en nu gaat het programma de listview vullen met alle bestanden van D:\. Vervolgens loopt het programma door de listview heen en rekent de CRC van de eerste file uit en verwijdert deze vervolgens, totdat de listview weer leeg is.

Echter mijn probleem is dat het allemaal wat "houterig" verloopt. Als ik het programma opstart begint het meteen met het uitrekenen enzo en ik krijg het formulier pas te zien nadat 'ie klaar is. Dan zie ik dus een lege listview en een progressbar die tot het einde vol is. Maar daar heb ik natuurlijk niks aan, ik wil zien wat het programma aan het doen is en hoever het al is.

Nu heb ik, om even te testen, een knop gemaakt en als je op die knop klikt doet het programma z'n ding. Dan gaat het wel goed. Alleen dan is er weer het probleem dat de listview wit blijft tijdens het verwijderen van de items. Ik wil *zien* dat het eerste item weggaat en dat de rest dus naar boven wordt geschoven.

Ik heb een uur of 2 zitten zoeken in de designer, maar ik kan er niks van vinden. :/ En ik weet eerlijk gezegd ook niet echt waar ik op moet zoeken...

Dus mijn vragen:
1) Hoe kan ik code pas laten uitvoeren als het formulier klaar is met laden (het Load event van het formulier heeft niet echt veel zin, want de code wordt al uitgevoerd terwijl het formulier nog niet eens zichtbaar is :/)
2) Hoe kan ik de items blijven zien tijdens het verwijderen van items in een listview? Of is dit juist een feature van de listview? Ik had ook al een listbox geprobeerd, maar die deed eigenlijk precies hetzelfde...


EDIT: Als ik CRC's uitreken van grotere bestanden (waarbij het dus langer duurt) hangt het hele formulier! :/ Dat is helemaal niet de bedoeling... Hoe kan ik ervoor zorgen dat dit niet gebeurt? In andere programma's (zoals bijv. hkSFV) is dat ook niet zo, daar werkt de verdere layout van het programma e.d. nog wel gewoon, terwijl het programma aan het rekenen is...

[ Voor 10% gewijzigd door Tanuki op 30-05-2007 21:47 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Threading.

https://fgheysels.github.io/


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Eventhandlers.

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 29-11 23:30
backgroundworker

[ Voor 113% gewijzigd door HawVer op 30-05-2007 22:09 ]

http://hawvie.deviantart.com/


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Bedankt voor de korte, maar toch zeer zinnige reply's. :) Ga ik van het weekend eens mee stoeien.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn nna 👌

Moeilijk he school ;-)

Ik raad je overigens ook Backgroundworker aan, succes :Y)

don't be afraid of machines, be afraid of the people who build and train them.


Verwijderd

threading + een application.events (dit zorgt ervoor dat het programma even pauzeert en de andere processen hun ding mogen doen, zoals windows die messages naar je form stuurt etc) lost ook al wat op als je geen threading wil

  • Ciqniz
  • Registratie: Oktober 2002
  • Laatst online: 07-09-2023

Ciqniz

On the move...

In VB6 deed ik bijvoorbeeld wel eens Me.Refresh (even dus alles van het form afhandelen, dan weer verder gaan) ergens tussenin het loopje proppen.

Het voordeel is dat je je GUI ziet, en je ook je progress-bar ziet werken maar het grootste nadeel is dat er geen GUI response is (alles wordt opgestapeld en later pas afgehandeld).

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 21:22

CodeIT

Code IT

Ik denk inderdaad dat een backgroundworker die je start in het Shown event van je form de oplossing is.

  • labee
  • Registratie: November 2002
  • Laatst online: 10-09-2022
Application.DoEvents();
Ik vraag me af wat het nut is om een topic te kicken met een 'opmerking' die:
- reeds vermeld is
- inferieur is aan de andere reeds gemelde oplossingen

[ Voor 77% gewijzigd door whoami op 07-06-2007 13:44 ]

http://www.labee.nl

Pagina: 1