Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Finestra di attesa durante operazioni lunghe
giovedì 28 giugno 2007 - 16.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
gio 28 giu 2007 - 16:46
Riciao,
voglio mostrare una finestra di caricamento (la classica "attendere prego" con la progress che gira, come al caricamento della guida di VS x intenderci) disabilitando la form che carica i dati, ma non capisco come fare
.
Mi spiego, nella load del form che carica i dati dal db (l'operazione lunga) ho questo codice:
try
Dim Wait As New frmWaiting
Me.Enabled = False
Wait.Show()
'operazione lunga....
catch ex as exception
Finally
Me.Enabled = True
Wait.Close()
end try
il problema è che la finestra Wait non si disegna correttamente (rimane bianca come quando l'applicazione non risponde). Anche se faccio un refresh subito dopo show.
Ho anche provato ad aprire Wait con ShowDialog, ma non va bene xché il codice di chi chiama non va avanti finche nn chiudo la finestra di dialogo.
Come devo fare???
Spero riuscite a darmi una mano che ci sto sbattendo la testa da un po'
Grazie!
Salo
P.S.: spero di nn averlo inviato 2 volte... sembrava nn riuscire a inviare il mex...
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 28 giu 2007 - 23:28
>Riciao,
>voglio mostrare una finestra di caricamento (la classica "attendere
>prego" con la progress che gira, come al caricamento della guida
>di VS x intenderci) disabilitando la form che carica i dati,
>ma non capisco come fare
.
>Mi spiego, nella load del form che carica i dati dal db (l'operazione
>lunga) ho questo codice:
>try
> Dim Wait As New frmWaiting
> Me.Enabled = False
> Wait.Show()
metti una cosa del genere
My.Application.DoEvents
in pratica ti permette di eseguire interamente tutto il codice che avviene prima e passa al codice successivo solo quando è terminata la prima parte
> 'operazione lunga....
>catch ex as exception
>Finally
> Me.Enabled = True
> Wait.Close()
>end try
>
>il problema è che la finestra Wait non si disegna correttamente
>(rimane bianca come quando l'applicazione non risponde). Anche
>se faccio un refresh subito dopo show.
>Ho anche provato ad aprire Wait con ShowDialog, ma non va bene
>xché il codice di chi chiama non va avanti finche nn chiudo la
>finestra di dialogo.
>Come devo fare???
>Spero riuscite a darmi una mano che ci sto sbattendo la testa
>da un po'
>
>Grazie!
>Salo
>
>P.S.: spero di nn averlo inviato 2 volte... sembrava nn riuscire
>a inviare il mex...
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
ven 29 giu 2007 - 09:13
Ciao!
Mi sa che DoEvents risolverebbe effettivamente il mio problema, solo che nn è usabile senza abilitare Application Framework (la spunta nelle proprietà del progetto) e io ho bisogno di far partire il tutto da una sub Main
O esiste un modo per abilitare l'application framework e far partire il mio progetto dalla classe Starter contenente la Shared Main (o cmq di usare DoEvents in qualche modo!!!)?
Salo
Teech
Profilo
| Expert
573
messaggi | Data Invio:
ven 29 giu 2007 - 11:31
2 soluzioni forse stupide ma che a logica potrebbero funzionare:
1. Metti "l'elaborazione lunga" nella frmWaiting.
2. Usi un Panel all'interno della Main che visializzi/nascondi a piacere contenente i controlli che vuoi come nella frmWaiting...
Forse non sono il massimo dell'eleganza però...
Ciao!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
gio 5 lug 2007 - 13:08
Grazie a tutti,
sono poi riuscito a risolvere nn proprio in modo elegante ma era un problema da risolvere al volo... cmq anche se My.Application.DoEvents() non funziona (l'Intellisense non riesce a risolvere e mi da errore in compilazione), ho scoperto che posso scrivere semplicemente Application.DoEvents()
Torna su
Stanze Forum
Elenco Threads
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 !