listView - wypełnianie danymi

0

Witam ;-)

Mam problem z listView :-/

Otuż stworzyłem nowy ListView i utworzyłem w nim 4 kolumny.
1-sza - numer punktu;
2-ga - współżedna X punktu;
3-cia - współżedna Y punktu;
4-ta - wysokość punktu;

wszystkie te dane (nr, x, y, h) odczyuje z pliku tekstowego wktórym są przechowywane, problem polege na umieszczemu odpowiednich elementów we własciwych kolumnach :/

(akcja manastepowac po nacisnieciu odpowiedniego buttona)

Próbowałem na kilka sposobów miedzy innymi:

private void button14_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            ListViewItem lvi = new ListViewItem();

            string onr;
            string ox;
            string oy;
            string oh;

            string wkat = wRobota.Text;
            //object OdczytaneDane = File.OpenRead(@"\Program Files\GeoRozbujnik\katalogi\" + wkat + @"\BazaPunktow.grt");
            //string Dane = Convert.ToString(OdczytaneDane);
            StreamReader sDane = File.OpenText(@"\Program Files\GeoRozbujnik\katalogi\" + wkat + @"\BazaPunktow.grt");
            string Dane = sDane.ReadToEnd();
            ArrayList punkt = new ArrayList(Dane.Split(';'));

            foreach (string znal in punkt)
            {
                if (znal != string.Empty)
                {
                    string[] znaleziony = znal.Split('.');
                    {
                        onr = znaleziony[0];
                        ox = znaleziony[1];
                        oy = znaleziony[2];
                        oh = znaleziony[3];
                    }
                    lvi.Text = onr;
                    lvi.SubItems.Add(ox);
                    lvi.SubItems.Add(oy);
                    lvi.SubItems.Add(oh);
                }
            }
            listView1.Items.Add(lvi);
            sDane.Close();
        }

Lecz w tym przypadku wyswietlał mi sie tylko jeden wiersz i to z pomieszanymi danymi (nr munktu był z pstatniego punktu w pliku a X, Y, H z pierwszego przewarznie).

Innym sposobem jaki próbowałem było:

private void button14_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            string wkat = wRobota.Text;
            StreamReader sDane = File.OpenText(@"\Program Files\GeoRozbujnik\katalogi\" + wkat + @"\BazaPunktow.grt");
            string Dane = sDane.ReadToEnd();
            ArrayList punkt = new ArrayList(Dane.Split(';'));

            for (int i = 0; i <= Convert.ToUInt32(punkt.Count); i++)
            {
                ListViewItem lvi = new ListViewItem();
                string kPunkt = Convert.ToString(punkt[i]);
                string[] znaleziony = kPunkt.Split('.');
                {

                    lvi.Text = znaleziony[0];
                    lvi.SubItems.Add(znaleziony[1]);
                    lvi.SubItems.Add(znaleziony[2]);
                    lvi.SubItems.Add(znaleziony[3]);
                }
                listView1.Items.Add(lvi);
            }
            sDane.Close();
        }

Lecz tym razem wyskakiwał błąd z zaznaczonym fragmentem " lvi.SubItems.Add(znaleziony[1]); " :/ lecz w z opisu błedu wywnioskowałem ze wartosci sa odczytywane prawodłowo, lecz problem lezy w zapisie ich do listView :/

Dodam jeszcze ze punkty w pliku zapisane są w nastepujący sposób:

``13.2.1.4;14.4.3.;

gdzie:
'13' - nr
2 - X
1 - Y
4 - H
'14' - nr
4 - X
3 - Y
H -brak.

napisany mam jeszcze fragment który wyszukuje zadany punkt w pliku i wypisuje mi NR, X, Y, H w oddzielnych textBox i działa pradidłowo a tu lipa :-/

Jesli ktos moze zaradzic to bardzo prosze o pomoc ;-(

0
  1. ListViewItem w View ustawione Details;
  2. współrzędne, a nie to, co Ty napisałeś;
  3. O takie coś chodzi?

    private void button1_Click(object sender, EventArgs e)
    {
    string dane = File.ReadAllText(@"C:\Temp\plik.txt");
    foreach (string linia in dane.Split(';'))
    {
    string[] wartości = linia.Split('.');
    this.listView1.Items.Add(new ListViewItem(wartości));
    }
    }
</ol>
0

Niestety nie moge na razie sprawdzic jak sie to spisuje bo jestem na wyjezdzie :) ale w piatek wróce i sprawdze :)

Ps. File.ReadAllText nie jest dostepny :) program jest na PDA z WM6.0 :)

0
ShurTugal napisał(a)

Ps. File.ReadAllText nie jest dostepny :) program jest na PDA z WM6.0 :)

Chyba forumowa wróżka jest na urlopie i mi tego nie powiedziała :/

0

Spoko :) ten problem juz obszedłem w taki sposób jak widac w moim kodzie z pierwszego postu :)

0

Dzieki wielkie:) działa jak trzeba:)

A wyglada dokłądnie tak:

 private void button14_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            string wkat = wRobota.Text;
            StreamReader sDane = File.OpenText(@"\Program Files\GeoRozbujnik\katalogi\" + wkat + @"\BazaPunktow.grt");
            string Dane = sDane.ReadToEnd();
            foreach (string linia in Dane.Split(';'))
            {
                string[] wartości = linia.Split('.');
                this.listView1.Items.Add(new ListViewItem(wartości));
            }
            sDane.Close();
        }

Moze komus sie przyda lub pomoze :)

0

Ten strumień, to chyba możesz zamknąć przed pętlą, bo przecież w niej go nie używasz ;)

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