Listview non trova subitems

sabato 18 agosto 2012 - 16.40

Mau67 Profilo | Expert

Ciao al forum,
stò impazzendo per una cosa banalissima ma non riesco a vedere l'errore, ho una listview1 e dichiaro le colonne in questo modo:
ListView1.Columns.Add("File", 250, HorizontalAlignment.Left)
ListView1.Columns.Add("Stato", 150, HorizontalAlignment.Center)
ListView1.Columns.Add("Nr.Record", 100, HorizontalAlignment.Right)
ListView1.Columns.Add("Tempo Trascorso", 100, HorizontalAlignment.Center) <<<<< Questo è il subitems(3) ma non lo vede

popolo gli items così:

Dim index As Integer = 0
Dim fi As FileInfo() = di.GetFiles("*.txt") 'di.GetFiles(".txt") se vuoi filtrare
Dim fiTemp As FileInfo
For Each fiTemp In fi
Dim readText() As String = File.ReadAllLines(fiTemp.FullName)
Dim listViewItem1 As New ListViewItem(New String() {fiTemp.Name, "", readText.Length}, -1, Color.Empty, Color.Empty, Nothing)
Me.ListView1.Items.AddRange(New ListViewItem() {listViewItem1})
Next fiTemp

For i As Integer = 0 To Me.ListView1.Items.Count - 1
Me.ListView1.Items(i).SubItems(1).Text = ("Pronto")
Me.ListView1.Items(i).SubItems(3).Text = ("00:00")
Next
il subitems(2) lo popolo così
Me.ToolStripStatusLabel1.Text = Me.ListView1.Items(i).SubItems(2).Text

qunado lacio la procedura mi restituisce questo errore:

InvalidArgument=Valore di '3' non valido per 'index'. Nome parametro: index

cosa devo fare stò impazzendo Grazie
Mau67

alextyx Profilo | Expert

Su che riga ti dà l'errore?
Comunque, a naso, mi sembra che manchi lo 'add' dei subitem. Se capisco bene, tu crei le colonne da codice, quindi aggiungi gli item, ma a questo punto hai aggiunto solo la cella che sta sotto la prima colonna. I subitem, se non ricordo male, non vengono creati automaticamente solo per il fatto che ci sono un tot di colonne, ma vanno esplicitamemente aggiunti alla collezione subitem dell'item (riga) desiderato. Tu fai un'assegnazione di un valore alla proprietà text di un subitem che non esiste ancora. Mi pare che tu possa tranquillamente fare tutto in un colpo, ovvero eseguire un add del subitem inizializzandolo con un certo valore della proprietà text. Occhio che se vuoi scivere il primo e il terzo, devi anche creare il secondo. Non puoi aggiungere un subitem senza che ve ne sia un altro immediatamente prima, fosse anche inizializzato con stringa vuota; quindi non puoi scrivere e creare contemporanemanete subitem in posizioni arbitrarie, ma solo andando in fila. Una volta che li hai già creati, allora puoi accedere a quello che ti interessa, usando l'indice. Almeno se ricordo bene.....

Mau67 Profilo | Expert

risolto dovevo aggiungere il subitem in questa stringa:
Dim listViewItem1 As New ListViewItem(New String() {fiTemp.Name, "", readText.Length}, -1, Color.Empty, Color.Empty, Nothing)

in questo modo:
Dim listViewItem1 As New ListViewItem(New String() {fiTemp.Name, "", "0.00" readText.Length}, -1, Color.Empty, Color.Empty, Nothing)

Grazie alla prossima
Ciao
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5