Oppure

Loading
05/10/10 18:50
Il Totem
Postato originariamente da carmine:

me lo potresti tradurre in c# da errori a me! mi dice che una columns non ha la proprietà Value!!


Values è una variabile, non un campo di classe. Devi aver modificato inopportunamente il codice, perché quell'eccezione, per apparire, ha bisogno che Values sia esplicitamente richiamato come membro di un oggetto ListViewColumn, ma questo non succede da nessuna parte in quel codice.
aaa
05/10/10 19:13
carmine
me lo potresti scrivere in c# non sto capendo, come faccio se in un file cè scritto "gino paoli"

colonna 1 | colonna 2
gino | paoli


ho provato così
private void leggi()
        {

            i = 0;
            try
            {
                ListViewItem el = new ListViewItem();
                StreamReader sr = new StreamReader("M:\file.txt");
                String[] line = new String[5] { columnHeader1.Text,columnHeader2.Text,columnHeader3.Text,columnHeader4.Text,columnHeader5.Text };
                    while ((line[i] = sr.ReadLine()) != null)
                    {
                        el = new ListViewItem(line);
                        listView1.Items.Add(el);
                        i++;
                    }
                    sr.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


ecco cosa vorrei se puoi spiegami come fare...please
Thanks
Ultima modifica effettuata da carmine 05/10/10 19:16
aaa
06/10/10 6:15
Il Totem
E' sbagliato... tu leggi una linea intera e la depositi in una cella dell'array, quindi inzializzi un elemento della listview con tale array, il quale conterrà solo uno (o due, o tre, ...) valori letti dal file e gli altri saranno header. Ad esempio, se il file è questo:
gino
pino
pinco
pallino
pippo
pluto

Gli elementi aggiunti saranno:
gino header2 header3 header4 header5
gino pino header3 header4 header5
gino pino pinco header4 header5
gino pino pinco pallino header5
gino pino pinco pallino pippo
pluto pino pinco pallino pippo

Che solo palesemente tutti errati.

Prima devi formattare il file in maniera diversa, mettendo più elementi su una linea sola, separati da uno spazio. Poi fai uno String.Split sul risultato della readline e ottieni l'array di valori corretti:
gino pino pinco pallino pippo pluto

file.ReadLine().Split(" ")   ' = {"gino", "pino", "pinco", "pallino", "pippo", "pluto"}

aaa
06/10/10 18:53
carmine
ho risolto il problema dell'inserimento nelle colonne finalemente ma alla fine ke ha inserito mi appare una messagebox, forse la exception del try catch, ke mi dice:

"System.NullReferenceException: "Riferimento a un oggetto non impostato su un'istanza di oggetto" riga45"

il codice è questo :

private void leggi()
        {

            try
            {
                ListViewItem el = new ListViewItem();
                StreamReader sr = new StreamReader("M:\file.txt");
                String[] line = new String[5];
                do
                {
                    line = sr.ReadLine().Split(' ');
                    el = new ListViewItem(line);
                    listView1.Items.Add(el);
                } while (line != null));
                sr.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
aaa
06/10/10 19:50
Il Totem
Riga 6 e 7: le inizializzazioni sono superflue; le variabili vengono comunque inizializzate ad altri oggetti nel while (con il risultato che allochi due oggetti in più che non vengono mai usati).

Qui non c'è la riga 45, ma hai usato un ciclo a condizione finale con line!=null. Quando si legge un file si deve usare un ciclo a condizione iniziale (while do e non do while). Infatti il ciclo termina solo quando line == null, ma questo significa che stai richiamando Split da un oggetto che non esiste, poiché file.ReadLine ritorna null. Questo succederà sempre se non cambi il codice.
aaa