Listview e immagini

mercoledì 11 luglio 2007 - 12.12

allforum Profilo | Junior Member

Ciao a tutti,
in una listview impostata come View.Details avrei la necessità di aggiungere una colonna contenente una piccola immagine (icona o gif, come preferite). Non essendo un esperto ( e tantomeno di vb.net) potrei avere un piccolo aiutino ?

Grazie fin da ora per l'interessamento.

PS: Uso Visual Studio 2003

munissor Profilo | Senior Member

Aggiungi l'imagelist al list view (proprietà SmallImageList). Poi nei singoli items metti ImageIndex al numero dell'immagine all'interno dell'image list che vuoi visualizzare..

allforum Profilo | Junior Member

.... non mi riesce, spiego meglio il mio problema:

Devo caricare una listview con in dati ricavati da una select su un database.
Questa listview è composta da varie colonne e in alcune di queste andrò a mettere il contenuto dei campi in tabella
mentre in altre colonne dovrò andare a mettere una immagine, piuttosto che un'altra, a seconda del contenuto
di un campo in tabella.

esempio:
Dim elem As New ListViewItem Dim ind = 0 . . . elem = listview.Items.Add(dtr("campo1")) listview.Items(ind).SubItems.Add(dtr("campo2")) listview.Items(ind).SubItems.Add(dtr("campo3")) If dtr("campo4") = 1 Then ' qui devo inserire nella colonna "immagine1" Else ' qui devo inserire nella colonna "immagine2" End If . . .


Proprio non ci riesco; chi mi può aiutare?

igor Profilo | Junior Member

Ciao,
alla tua form aggiungi un controllo di tipo ImageList. A questo componento aggiungi le immagini che ti servono.
Poi tra le proprietà del controllo ListView imposta la proprietà SmallImageList con il controllo Imagelist appena creato.
Poi nel codice vai ad impostare l'imageindex del controllo imagelist
If dtr("campo4") = 1 Then
listview.Items(ind).ImageIndex = 1
Else
listview.Items(ind).ImageIndex = 2
End If

Spero così ti sia più chiaro. buon lavoro
igor

munissor Profilo | Senior Member

Non si può fare allora...il list view accetta l'immagine solo per la prima colonna (si associa all'item, non ai subitems).
Si può fare in alternativa con un datagridview in modo semplice.
Un modo più complesso ma più efficiente è gestirsi il disegno delle colonne del listview, ma è una cosa che devi vedere tu perchè l'implementazione dipende dal tuo problema..

allforum Profilo | Junior Member

OK, potrebbe andami bene anche una sola immagine per ogni riga.
Ho creato una imagelist con due elementi ed ho fatto come hai detto ma non succede niente.
Non provoca errore ma semplicemente non visualizzo nulla.
Ho provato anche con vari formati di immagini (bmp, gif, ico).
Dove sbaglio ?

munissor Profilo | Senior Member

a questo punto "è d'obbligo" vedere il codice che usi per inizializzare il list view :P

allforum Profilo | Junior Member

OK;

Lista (ListView) e Limage (ImageList) sono impostati in progettazione;
La proprietà SmallImageList di Lista è impostata = Limage.
In Limage, sempre in progettazione, ho caricato 2 immagini.


Nel codice, Lista viene popolata in questo modo:

. . Lista.View = View.Details Lista.Columns.Clear() Lista.Columns.Add("Col1", 20, HorizontalAlignment.Center) Lista.Columns.Add("Col2", 20, HorizontalAlignment.Center) Lista.Columns.Add("Col3", 20, HorizontalAlignment.Center) Lista.Items.Clear() . . Do While dtr.Read() Lista.Items.Add(dtr("Campo1")) Lista.Items(ind).SubItems.Add(dtr("Campo2")) Lista.Items(ind).SubItems.Add(dtr("Campo3")) ind = ind + 1 loop . .

Cosa mi manca ?

Ciao.

igor Profilo | Junior Member

Do While dtr.Read()
Lista.Items.Add(dtr("Campo1"))
---- Lista.items(ind).ImageIndex = ????
Lista.Items(ind).SubItems.Add(dtr("Campo2"))
Lista.Items(ind).SubItems.Add(dtr("Campo3"))
ind = ind + 1
loop

Devi dire al tuo item l'index dell'immagine che vuoi mostrare. Inoltre
devi impostare la proprieta imagelist del listview.


igor

allforum Profilo | Junior Member

.... ora nel ListView è presente, all'estrema sinistra di ogni riga, una colonna, ma è vuota. Che sia un problema legato al formato immagine?
Devono essere in un formato particolare ?
Io ho provato con .gif

munissor Profilo | Senior Member

Se nel desiger vedi correttamente le immagini non è un problema di formato..
Assicurati invece che imageindex dei singoli elementi sia 0 o 1 (in quanto hai aggiunto solo 2 immagini all'image list).

allforum Profilo | Junior Member

.. in progettazione, quando vado ad aggiungere le immagini le vedo normalmente.
ImageIndex l'ho impostato fisso a 0 e ho provato anche con 1.
... continuo a non vedere niente.

Butto tutto e ricomincio daccapo.

Vorrei provare a creare i controlli ListView e ImageIndex direttamente da codice.

... qualche suggerimento ?


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