Fare Lampeggiare un Label.Text in visual studio 2005

venerdì 15 agosto 2008 - 12.56

Mau67 Profilo | Expert

Salve ho la necessità di fare lampeggiare un Label in attesa che dopo la pressione del Button mi apra il form

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.Label11.Text="ATTENZIONE: Stò recuperando i dati di tutte le banche"
If Message.Show("Vuoi continuare?", carica banche, MessageBoxButtonss,YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Dim frm As New SelezionaBanca
frm.ParametroSelezione = 2
frm.ShowDialog()
Me.Label11.Text="*"
End If

Me.Label11.Text="*"

End Sub

Sono Autodidatta lo preciso

Buon ferragosto e grazie
Mau67

Anonimo Profilo | Senior Member

Usi l'oggetto Timer. Lo stesso funziona in modo molto semplice, impostata la proprietà interval (l'unità di misura sono i millesecondi 1000 = 1 sec) se abilitato genera ad ogni intervallo di tempo l'evento Tick che se intercettato può eseguire qualsiasi operazione ad ogni intervallo, attenzione a non appesantire troppo il codice in questo evento.

Nel tuo caso specifico userei un timer impostato con intervallo di 750 e nell'evento click del bottone il timer.enabled diventa true, a fine evento click diventa false. Nell'evento Tick del timer cambi la visibilità della label, creando così un effetto di lampeggiamento.


Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

Mau67 Profilo | Expert

Non riesco a farlo lampeggiare ho seguito il tuo consiglio ed ho scritto questo:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Timer1.Enabled = True
Me.Label11.Text = "ATTENZIONE: Stò recuperando i dati di tutte le banche, l'operazione potrebbe richiedere alcuni minuti non effettuare altre operazioni"

If MessageBox.Show("Vuoi continuare?", "Carica banche", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Dim frm As New SelezionaBanca
frm.ParametroSelezione = 2
frm.ShowDialog()
Me.Label11.Text = "*"
End If
Me.Label11.Text = "*"
Me.Timer1.Enabled = False
End Sub

Ma esattamente nell'evento Tick del Label che stringa devo scrivere?

Grazie
Mau67

Anonimo Profilo | Senior Member

Nell'evento Tick del Timer scrivi semplicemente.

if Label1.Visible then Label1.Visible=false else Label1.Visible=true

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

Mau67 Profilo | Expert

il codice in se funziona, ma nella mia applicazione se prima non termina l'esecuzione il label non lampeggia

Mi spego praticamente il codice che ho sritto nel butto mi apre un form dove c'è un ListBox con il quale carico dei dati relativi a tutte le banche, praticamente ci sono circa 70.000 record, quindi se prima non si apre il form il label non lampeggia.

Invece deve lampeggiare proprio in attesa che il form chiamato venga aperto.

Cosa devo fare grazie
Mau67

Anonimo Profilo | Senior Member

Mi viene in mente una tecnica, non elegante ma dovrebbe funzionare.
Dichiara nel form1 una variabile boolean pubblica che chiamiamo attTimer.
Alla creazione del form1 la variabile vale false. Nell'evento click la variabile diventa true. Alla fine del caricamento dei dati del form2 la variabile form1.attTimer diventa false.

Il timer deve sempre essere attivo ma l'evento tick cambia e diventa:

if attTimer then if Label1.Visible then Label1.Visible=False else Label1.Visible=True

Questo dovrebbe garantire la visualizzazione del lampeggiamento della label. Se non avviene dimmelo che facciamo ancora una piccola modifica e dovremmo esserci.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

Mau67 Profilo | Expert

non funziona ancora come vorrei ti allego un file dove si vede il comportamento dell'applicazione

Grazie
Mau67

Anonimo Profilo | Senior Member

Guardati l'esempio, l'unica cosa strana è che ho usato un secondo timer per simulare i ritardo nel caricamento, a parte quello dovresti trovare la soluzione, il tuo codice è lievemente sbagliato, guarda l'esempio e capisci. Il timer1 non deve più essere settato con la proprietà enabled.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

Mau67 Profilo | Expert

Scusa ho scaricato l'esempio ma nel form che hai creato non c'è ne codice ne timer ne altro solo un form vuoto.

poi io programmo in VB non in Csharp se l'esempio puoi farlo in VB te ne sarei grato

Grazie
Mau67

Anonimo Profilo | Senior Member

Eccoti la versione in vb, non so perchè prima ha postato il progetto vuoto, peccato. Cmq. Questo funziona bene.



Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

Mau67 Profilo | Expert

Ok funziona grazie

Mau67
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5