Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - progress bar marquee c#
Forum - Altri Linguaggi - progress bar marquee c#

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
gllobal (Normal User)
Rookie


Messaggi: 41
Iscritto: 02/04/2012

Segnala al moderatore
Postato alle 18:02
Mercoledì, 13/03/2013
Ciao a tutti, sapete dirmi come posso fare eseguire una progress bar marquee durante un'operazione? In poche parole devo caricare dei dati da un file all'altro e serve molto tempo, quindi ho pensato di inserire una progress bar ma non so come fare, le windows form le ho iniziate a studiare poche settimane fa e la progress bar non l'abbiamo  ancora trattata, ho cercato delle guide in internet ma sono tutte in inglese e ne capisco una parte. Grazie ciao :)

PM Quote
Avatar
Uno sciame di API (Member)
Pro


Messaggi: 66
Iscritto: 10/07/2012

Segnala al moderatore
Postato alle 19:10
Mercoledì, 13/03/2013
Per inserire una progressbar vai nel Toolbox e seleziona appunto progressbar, dopo che l'hai inserita nel form vai nelle sue proprietà selezioni style>Marquee
A questo punto, dopo che compili ed esegui il software vedrai che la progressbar farà quello che vuoi tu (se ho capito bene il tuo problema :) ).

PM Quote
Avatar
gllobal (Normal User)
Rookie


Messaggi: 41
Iscritto: 02/04/2012

Segnala al moderatore
Postato alle 20:05
Mercoledì, 13/03/2013
si fino a qua ci sono ;) , il problema è che la progressbar si ferma appena inizia l'operazione vera e propria, cioè appena il programma inizia a copiare i dati dal file excel e li inserisce nel file .vcf la progressbar si ferma, io ho pensato di creare un'altro thread da eseguire durante l'operazione principale ma non so come fare, anzi mi sono venute in mente alcune idee ma non funzionano, perchè come detto sono un principiante alle prime armi, a scuola non ci hanno insegnato il multithreading ne le progressbar, abbiamo iniziato a programmare in ambiente windows da 2 settimane ma non abbiamo fatto quasi niente quindi io in questo momento sperimento varie cose sperando che funzionino. :D :D :D
Io ho provato una cosa così:
Thread t = new Thread(new ThreadStart(pgBar.Show));
t.start();

Nelle proprietà della progeressbar ho messo visible a false.

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:49
Mercoledì, 13/03/2013
Per quanto ne so il tuo ragionamento del multithreading è giusto ma devi eseguire su un nuovo thread la tua operazione di copia, e non quella della progressbar, tipo così:
Codice sorgente - presumibilmente Altri Linguaggi

  1. Thread t = new Thread(new ThreadStart(copiaDati()));
  2. t.start();


PM Quote
Avatar
gllobal (Normal User)
Rookie


Messaggi: 41
Iscritto: 02/04/2012

Segnala al moderatore
Postato alle 8:40
Giovedì, 14/03/2013
ok grazie, in effetti è più logico, adesso provo e ti faccio sapere :)

PM Quote
Avatar
gllobal (Normal User)
Rookie


Messaggi: 41
Iscritto: 02/04/2012

Segnala al moderatore
Postato alle 21:11
Giovedì, 14/03/2013
ok, funziona GRAZIE :), solo che adesso non so come fermare la progressbar quando termina il thread della funzione. :-?:-?:noway:

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 18:38
Domenica, 17/03/2013
Uhm se non mi sbaglio di solito nei form windows le progress bar marquee non si fermano, di solito si chiude il form... potresti nasconderla con pgBar.Hide() (poi forse la si può anche fermare ma non saprei come).

PM Quote
Avatar
gllobal (Normal User)
Rookie


Messaggi: 41
Iscritto: 02/04/2012

Segnala al moderatore
Postato alle 1:18
Lunedì, 18/03/2013
io la devo fermare quando termina il thread della funzione, all'interno del thread della funzione nn posso mettere un'istruzione che nasconda la progressbar visto che quest'ultima non è stata creata in quel thread, se invece la metto nello stesso thread dove è stata creata questa compare e scompare, perchè dopo aver creato la barra viene eseguita l'istruzione che la nasconde. Mi scuso se non mi sono spiegato bene. ;) Grazie per i vostri aiuti. :k: mi serve per un programma che devo finire entro questa settimana, perchè devo scrivere anche tutta la documentazione sulle caratteristiche del programma, la parte della progressbar si può anche sorvolare però ci tengo a metterla, almeno così chi utilizzerà il programma non penserà che si sia impallato e in più imparerò come utilizzarla per i futuri programmi. :k:

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2102
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:05
Lunedì, 18/03/2013
Un metodo che uso io per queste eventualità, è il metodo invoke.

che in pratica appunto permette ad un thread di avere accesso a controlli del form attivo.
e gestirlo tranquillamente

Purtroppo non conosco alla perfezione il vb.net ma ti scrivo il codice in C#
tanto lo puoi convertire tranquillamente.

provo a scrivertelo senza l'ide alla mano.

Codice sorgente - presumibilmente C++

  1. public void Form_load()
  2. {
  3.  
  4.  
  5. Thread t = new Thread(accesso_thread);
  6. t.Start();
  7.  
  8. }
  9.  
  10.  
  11.  
  12. public void accesso_thread()
  13. {
  14. //Dopo che il thread completa la tua operazione sui file
  15. t.sleep(2000); //esempio
  16.  
  17. progressbar1.Invoke(() => { progressbar1.value = 100; progressbar1.style = progressbarstyles.Continuous; });
  18.  
  19.  
  20. }






PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo