02/11/09 22:32
Gianluca87
dipende da cosa devi fare... se gestire gli eventi di tutte le label su una sola funzione ti basta associare al evento click di tutte le label la stessa fuonzione, per capire quale label chiama la funzione la casti dentro l'evento e recuperi l'oggetto della label che ha chiamato l'evento...ovviamente dipende da che ci devi fare...
private void Label_Click(object sender, EventArgs e)
{
Label label = ((Label)sender);
}
Ultima modifica effettuata da Gianluca87 02/11/09 22:34
aaa
04/11/09 19:07
oretovalley
ok funziona tutto a meraviglia
grazie mille
Ora vorrei sapere un'altra cosa, io grazie a queste label dinamiche carico una lista di contatti da un database, adesso nel database c'è anche un campo che mi dice se l'utente è online oppure offline, e tramite un file php io dal vb.net mi connetto a quest'ultimo e mi prendo la stringa restituita dal file php che a sua volta la preleva direttamente dal database tutto funziona perfettamente, solo che io volevo colorare la label in verde se l'utente è online, e in grigio se è offline, adesso questo funziona perfettamente solo all'inizio, ma dopo aver caricato il colore quest'ultimo non viene più modificato nonostante io con un timer ogni 2 secondi richiami la funzione per ricaricare la lista. Come posso fare? questo è il codice che uso:
Function carica_contatti()
Dim objScaricaURL As New ScaricaURL
objScaricaURL.SetURL("http://localhost/msn_test/contatti.php?nick=" & TextBox1.Text)
Try
vettore = System.Text.RegularExpressions.Regex.Replace(objScaricaURL.Scarica, "", "").Split(";")
Catch ex As Exception
End Try
For indice = 0 To UBound(vettore) - 1
Dim new_label As New Label
new_label.SetBounds(0, indice * 20, 100, 20)
new_label.BorderStyle = BorderStyle.FixedSingle
objScaricaURL.SetURL("http://localhost/msn_test/controlla_stato.php?cercato=" & vettore(indice))
Try
If "offline" = System.Text.RegularExpressions.Regex.Replace(objScaricaURL.Scarica, "", "") Then
new_label.BackColor = Color.LightGray
ElseIf "online" = System.Text.RegularExpressions.Regex.Replace(objScaricaURL.Scarica, "", "") Then
new_label.BackColor = Color.LightGreen
End If
Catch ex As Exception
End Try
new_label.Text = vettore(indice)
Panel1.Controls.Add(new_label)
AddHandler new_label.MouseClick, AddressOf new_label_Click
Next
End Function
la soluzione più ovvia sarebbe un dispose delle varie label ma come lo faccio con label create in esecuzione ?
Ultima modifica effettuata da oretovalley 04/11/09 19:14
aaa
04/11/09 19:23
oretovalley
ho risolto usando Panel1.Controls.Clear()
aaa
05/11/09 13:15
oretovalley
ho un'altro problema vorrei sapere come una volta associato alle label un contextmenustrip posso passargli il nome della label appena cliccata ?
aaa