Wczytanie pliku do kolumn w listview

0

Cześć
Mam plik tekstowy o wyglądzie: wyraz\twyraz2\twyraz3

Trzy wyrazy w linii oddzielone tabulatorem. Chce wczytać każdy wyraz do innej kolumny w tej samej linii (listview). Dzięki za pomoc

Moj kod ktory nie chce dzialac ;/

 FileStream fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);
            {
                using (TextReader sr = new StreamReader(fs))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] data = line.Split('\t');    \\JAK POMINĄĆ PUSTE LINIE NA KOŃCU PLIKU?
                        ListViewItem lvi = new ListViewItem();
                        lvi.Text = data[0];
                        lvi.SubItems.Add(data[1]);
                        listView1.Items.Add(lvi);
                    }
                }
            }
0

Jeśli chcesz wstawić coś do innej kolumny w ListView, musisz mieć ustawione te kolumny w kontrolce w zbiorze Columns, a dodawanie samych wartości do nich realizujemy za pomocą dodawania kolejnych obiektów do ListViewItem.SubItems - kolejne sub items oznaczają kolejne kolumny, gdzie pierwszą kolumną jest sam ListViewItem. Z tego co widziałem, to zacząłeś coś podobnego tutaj robić.

Pominąć puste linie na końcu pliku można zrobić za pomocą użycia metody String.Trim (która usuwa zbędne spacje w ciągu znaków) i sprawdzenie, czy długość tekstu (linijki) jest równa zeru - jeśli jest, to linia jest pusta.

0
Wyjątek System.NullReferenceException nie został obsłużony
  Message=Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Czy moglby mi ktoś pomoc? Dostaje wyjatek w ostatniej lini. W listview mam trzy kolumny. Wzor pliku txt: tekst tekst tekst

1

Dostaje wyjatek w ostatniej lini. W listview mam trzy kolumny. Wzor pliku txt: tekst tekst tekst

               listView1.Items.Add(lvi);

W tej linii?

ListView1 jest nullem (albo listView1.Items, ale to raczej niemożliwe) - gdzie i kiedy ten kod wykonujesz?

0
 private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                pathToFile = openFileDialog1.FileName;
                FileStream fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);
                {
                    using (TextReader sr = new StreamReader(fs))
                    {
                        string line;
                        while ((line = sr.ReadLine()) != null)
                        {
                            string[] data = line.Split('\t');
                            ListViewItem lvi = new ListViewItem();
                            lvi.Text = data[0];
                            lvi.SubItems.Add(data[1]);
                            lvi.SubItems.Add(data[2]);
                            listView1.Items.Add(lvi);
                        }
                    }
                }
            }
        }

Już jest OK. Teraz mam inny problem. Plik który wczytuje ma ponad 150 000 linii przez co wczytanie go zajmuje około 40sekund. Czy da się jakoś zoptymalizować to wczytywanie, ewentualnie tak wczytywać plik, aby wczytane linie wyświetlały się na bieżąco w listview. Dzięki wielkie za pomoc!

0

Odświeżam...

1 użytkowników online, w tym zalogowanych: 0, gości: 1