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
Colorare righe della listview
mercoledì 10 novembre 2010 - 14.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
Windows XP
|
Visual Studio 2008
|
Access (.mdb)
|
Crystal Reports 2008
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 10 nov 2010 - 14:46
Ciao al forum, ho un form con 2 listview,
Nella listview1 carico l'elenco degli amministrati
nella listview2 inserisco le variazioni mensili degli amministrati.
A questo punto io vorrei vedere visivamente se ho già fatto una variazione per qualche amministrato semplicemente evidenziando in rosso il nominativo che si trova nella listview1 quando questa è presente nella listview2.
Come posso fare?
Grazie in anticipo
e saluti dall'Afghanistan (sono un militare) ciao a tutti
Mau67
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 10 nov 2010 - 15:07
Ciao.
Allora per colorare un Item della listView, basta accedere all'item in questione tramite l'indice e dargli il colore
me.ListView1.Item(x).ForeColor = Color.Red
Poi per vedere se esiste o no nell'altra listview, io farei in questo modo:
- durante il caricamento della seconda listView, memorizzerei un IDunivoco della persona (va bene anche il nominativo come dicevi tu) in una List di stringhe.
Private ElencoNomi as Generic.List(Of String) = new Generic.List(Of String)() 'da dichiarare a livello globale nella tua form
- poi quando aggiungi gli Item alla ListView2, aggiungi il nominativo anche nell'oggetto precedente:
ElencoNomi.Add(xxxxx.Toupper().Trim()) ''fai il toupper.trim() in modo da poter effettuare una ricerca non case-sensitive
Poi ti scorri gli item della listview1 e controlli uno ad uno se esistono nella 2:
Dim i as integer
For i = 0 to me.ListView1.Items.Count-1
if ElencoNomi.Contains(me.listview1.items(i).subitems(X).text.Toupper().trim()) then ''(Al posto di X devi mettere l'indice a base 0 di colonna della listview dove c'è il nominativo)
me.listview1.items(i).forecolor = Color.Red
else
me.listview1.items(i).forecolor = Color.Black
end if
next
Ciao ciao e un saluto a tutti i connazionali in missione.
Cristian Barca
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 10 nov 2010 - 15:33
Scusa ma non ho capito molto
io popolo contemporaneamente i due listview filtrandoli, quindi all'atto del caricamento la listview1 si deve colorare se nella listview2 e presente l'id corrispondente al nome.
non sono molto pratico potresti dirmi il codice dove scriverlo?
Scusami ma da autodidatta ho qualche difficoltà
Grazie e tanti saluti dal contingente italiano in afghanistan
Mau67
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 10 nov 2010 - 15:36
Ciao.
Se puoi posta il codice che usi per popolare le due Listview così ti inserisco quello che serve.
Cristian Barca
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 10 nov 2010 - 16:13
1472_popolo listview 1 e 2.zip
ti allego un file txt con il codice
Grazie infinitamente
Mau67
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 10 nov 2010 - 16:44
1473_popolo listview 1 e 2.zip
Ciao.
Ti ho rsposto con il tuo stesso file modificato. All'interno del file cerca @@@ (3 chiocciole) così localizzi le parti che ho aggiunto. Ogni blocco che ho aggiunto inizia e finisce con le 3 chiocciole.
Ti spiego cosa faccio per fare quello che serve a te.
Durante il caricamento della listview2, aggiungo in una Lista di stringhe i valori che dovrò controllare.
Poi durante il caricamento della ListView1 controllo se l'elemento che sto aggiungendo è presente nella Lista di Stringhe. Se presente, imposto il colore rosso altrimenti il nero.
Per una questione di ottimizzazione, ti consiglio di caricare prima la ListView2 e poi la ListView1.
Se poi non è possibile invertire le chiamate devi per forza fare questo:
Carica ListView1
carica ListView2
Carica ListView1
questo perchè la Lista di stringhe si popola con il riempimento della ListView2 e quindi se fai prima il caricamento della Listview1 non troverà mai duplicati perchè la Lista di Stringhe è vuota.
Ciao ciao
Cristian Barca
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 10 nov 2010 - 18:36
Mi da 1 errore
Private Elenco As Generic.List(Of String) = New Generic.List(Of String)
mi dice che :
Elenco esiste già come Private elenco As System.Collections.Generic.Generic.List(Of String)
Mau67
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 10 nov 2010 - 21:56
Ciao.
Scusami. Ho dichiarato una variabile con lo stesso nome di una Sub e questo al compilatore non piace tanto.
la riga in questione è questa:
private Elenco as Generic.List(of string) = new Generic.List(of string)
al posto di "Elenco" mettici "ListaOccorrenze" oppure un nome più consono (come vuoi tu). alla fine dovresti ottenere una cosa del genere:
private ListaOccorrenze as Generic.List(of string) = new Generic.List(of string)
Poi in tutti i blocchi di codice che ti ho aggiunto io nel messaggio precedente, dove uso Elenco. sostituiscilo con ListaOccorrenze. )o con il nome chi scegli tu). Così la cosa funziona.
ciao ciao
Cristian Barca
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
gio 11 nov 2010 - 05:04
Grazie Cristian funziona perfettamante Un saluto dall'afghanistan e alla prossima
Ciao Ciao
Mau67
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 11 nov 2010 - 08:38
>Grazie Cristian funziona perfettamante Un saluto dall'afghanistan
>e alla prossima
>
>Ciao Ciao
>Mau67
Un saluto anche a te e a tutta la truppa. Ti ricordo di chiudere il thread così non lasciamo discussioni aperte quando effettivamente il problema è stato risolto.
Cristian Barca
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 !