[C#] Gestione form di caricamento

sabato 30 gennaio 2010 - 12.16

mto89 Profilo | Newbie

ciao, ho fatto una sorta di task manager in c#, e ci mette 3-4 secondi ad avviarsi.
Volevo fare una finestrella che in quei secondi visualizzasse una barra di caricamento.
Ho due grosse domande:
- Primo ho creato una form con progress bar, ma esiste un modo per farla caricare in maniera esatta fino all'apertura del form principale?
- Secondo io nella form principale ho una cosa del tipo:
public Form1()
{
InitializeComponent();
...
}

E l'inizializzazione dei componenti è la parte gravosa come tempo, per cui volevo che la finestra con progressbar apparisse prima del tipo:
public Form1()
{
FormConBarra splash = new FormConBarra();
splash.Show();

InitializeComponent();

splash.Close()
}
Che però non funziona in quanto la form che si apre prima di "partire" aspetta il caricamento della principale.

Chi mi sa dare delle dritte su come visualizzare stato caricamento all'avvio? e fare apparire la form prima del programma principale?

Inoltre in genrale come si può fare apparire una form prima della princiaple, e una volta carica la principale farla apparire al suo posto?

ciccio_ska Profilo | Newbie

Ciao,
dunque se vuoi far avviare una form piuttosto che un'altra quando lanci l'applicazione, devi modificare il metodo main nel file Program.cs come segue:
Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new TuaForm());
dove TuaForm è la form che vuoi far partire all'avvio dell'applicazione. Quindi nel tuo caso la form che contiene la barra d'avanzamento.
Per quanto concerne la gestione degli eventi legati alla barra di avanzamento, ti consiglio di usare l'oggetto BackGroundWorker.


Francesco Scalise
blog: http://www.flash-hacks.com

freeteo Profilo | Guru

Ciao,
io proverei a mettere nel "Program.cs", nella "main" un codice di questo tipo:

Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); FormAvvio avv = new FormAvvio(); avv.Show(); //--- qui la carichi e quindi rimane visibile l'altra TuaForm f = new TuaForm(); avv.Close(); Application.Run(f);


Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5