MessageBox

giovedì 11 novembre 2004 - 12.56

sarto76 Profilo | Junior Member

ciao a tutti io ho 2 domande:
1) esistono dei messageBox o oggetti simili che mi diano solamente un messaggio , e che scompaiano solamente quando io lo decido? ad esempio sto calcolando... --> sparisce solo alla fine del calcolo

2) COME FACCIO A FAR CHIUDERE UN MESSAGEbOX? Io ho un messagebox che appena io clicco su sì mi fa determinati calcoli che durano 1 minuto. alla fine mi da il risultato su un altro messagebox. Come faccio a far si che appena io clicco sul si del primo messagebox mi si chiuda prima di fare i calcoli? Il problema di adesso è che non si chiude e mentre esegue i calcoli nel messagebox c'è una riga bianca che lo ricopre quasi tutto

Grazie mille a tutti

Andy Profilo | Senior Member

Ciao...per la prima domanda puoi usare anche dei threads, dove apri una form prima del calcolo e la chiudi appena finito..per quanto riguarda la seconda domanda aattendo anche io delle solu<ioni, in quanto succede anche a me..in parole povere, se lancio un processo che dura un bel pò di tempo...es un While che fa molteplici operazioni al suo interno, cè un modo x causare una interruzione (il classico cancel?) mentre è ancora all'opera?

E perchè la seconda volta che lancio il calcolo non rinfresca la form e anch'io vedo quella fastidiosa linea bianca fino alla fine del calcolo? UP..

Ciao

sarto76 Profilo | Junior Member

ciao ad entrambi, per la prima domanda la progress bar non mi va bene perchè io voglio che fintanto che c'è il messaggio l'utente non può far niente, deve aspettare finchè il messaggio in questione spatisce.
Per i threads come finziona? dovrei comunque far apparire una messageBox... e la messagebox possono chiuderla se ha dei bottoni. Io vorrei un messaggio senza bottoni, è possibile?

Andy Profilo | Senior Member

Ciao..per usare i thread devi:

1) Dichiarare il thread prima di lanciare il tuo calcolo ( ad es nell'evento click di un tasto su form):

Dim t As New Thread(AddressOf ThreadProc) 'Creates the new thread

2) Lanciare il thread, sempre prima dell'inizio della procedura di calcolo:

t.start()

All'interno della tua procedura threadproc non dev'esserci un messagebox, ma puoi fargli fare quello che vuoi..nel mio caso apro un'altra form con solamente una Progressbar, che viene aggiornata ogni tot di dati fino ad arrivare al conteggio totale:

'*******
'ROUTINE DI THREAD (ATTESA)
'*******
Public Sub ThreadProc()
Dim F As New Attesa ' "Attesa" è il nome della Form in progettazione

F.Show()
F.Focus() ' La tiene rinfrescata

PB = F.ProgB ' PB è la progressbar sulla form "Attesa" (dichiarata globale)
F.Refresh()
If F.ProgB.Value >= 100 Then ' Se il progressbar è arrivato alla fine chiudi tutto
'Remove the form after the "task" finishes
F.Hide()
F.Dispose()
End If
End Sub


Ultima cosa, nel mio caso, mentrre faccio i calcoli aggiorno la progressbar:
PB.Value = (contatoreParzialeElementi * 100) / ContatoreTotaleElementi

Ovviamente se ho finito di effettuare calcoli sono alla fine della progressbar ed il thread viene chiuso..

Spero di essere stato chiaro..
a presto.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5