LIstview i wyswietlenie danych w kolumnach

0

Witam, używając Listview natknąłem się na problem wyświetlam dane z kolekcji dla poszczególnych kolumn. Dla jednej z nich udało się wyświetlić, jednakże nie mam pojęcia jak wyświetlić w kolejnych wrzucam screena i kod

form.png

 public void Test()
        {
            this.listView1 = new ListView();
            listView1.Bounds = new Rectangle(new Point(10, 10), new Size(300, 200));

          
            listView1.View = View.Details;

            listView1.GridLines = true;
           
            listView1.Sorting = SortOrder.Ascending;

           
            listView1.Columns.Add("Angielski", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Polski", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Dodaj", -2, HorizontalAlignment.Right);

         

            for (int i = 0; i < slowka.SZA.Count; i++)
            {

                listView1.Items.Add(slowka.SZA[i].ToString());


            }

            this.Controls.Add(listView1);


        }

Dzięki za wszelkie pomoce.

0

Dopisz kolejną pętle dodającą podpozycje do listy ListView.
Coś w stylu :

 for (int i = 0; i < slowka.Length; i++)
            {
                 listView1.Items[i].SubItems.Add(slowka2[i].ToString());
                 listView1.Items[i].SubItems.Add(slowka3[i].ToString());



            }


Każda kolejna metoda

 listView1.Items[i].SubItems.Add

dodaje wartości w kolejnych kolumnach, w wierszu o wskazanym indeksie.
Pozdro :P

0

Próbowałem tą metodą jednak wyskakuje błąd ArgumentOutOfRangeException , InvalidArgument=Wartość '0' nie jest prawidłową wartością dla 'index'.
Nazwa parametru: index. Ustawiałem nawet wartosci z palca

for (int i = 0; i < slowkaZdrowieAng.Count; i++)
            {
                listView1.Items[1].SubItems.Add(slowkaZdrowieAng[2].ToString());
               // listView1.Items.Add(slowkaZdrowieAng[i].ToString());


            }

Wciąż krzyczy błąd.

0

Pokaz deklaracje tablicy

0

Problem z przekroczeniem wartości indeksu.
Masz tu troszkę kodu może coś się rozjaśni, u mnie działa :)

 private void Form2_Load(object sender, EventArgs e)
        {
            var slowka = new List<string> { "1", "2", "3" };
            var slowka2 = new List<string> { "4", "5", "6" };
            var slowka3 = new List<string> { "7", "8", "9" };
            listView1.Bounds = new Rectangle(new Point(10, 10), new Size(300, 200));


            listView1.View = View.Details;

            listView1.GridLines = true;

            listView1.Sorting = SortOrder.Ascending;


          listView1.Columns.Add("Angielski",-2, HorizontalAlignment.Left);
            listView1.Columns.Add("Polski", -2, HorizontalAlignment.Center);
            listView1.Columns.Add("Dodaj", -2, HorizontalAlignment.Right);

       

            for (int i = 0; i < slowka.Count; i++)
            {

                listView1.Items.Add(slowka[i].ToString());
               
            }
            for (int i = 0; i < slowka.Count; i++)
            {
                 listView1.Items[i].SubItems.Add(slowka2[i].ToString());
                 listView1.Items[i].SubItems.Add(slowka3[i].ToString());



            }
}
0

Już sobie poradziłem zmieniłem całkowicie kontrolkę na dataGirdView i jest OK! Dziękuje serdecznie za zainteresowanie:) Nie wiem czy mogę kontynuować w tym wątku, w razie czego proszę o upomnienie :D Ale borykam się z problemem zdarzenia dla przycisku "+" tworząc tworząc delegat, i dodajac eventa działa on dla każdego z buttonów i robi tą samą czynność(dla przykładu otwiera formatkę) a chciałbym, aby każdy z przycisków robił swoją czynność(dodawał do listy słowo w danym wierszu). Jak rozróżnić każdy z utworzonych przycisków? I dla każdego z przycisków przypisać inne zdarzenie?

  //dodanie butona do datagridvieew
            DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
            WordsDataGridView.Columns.Add(btn);
            btn.Text = "+";
            btn.Name = "Dodaj";
            btn.UseColumnTextForButtonValue = true;
            btn.Width = 111;

            btn.DataGridView.Click += new EventHandler(DataGridView_Click);

 private void DataGridView_Click(object sender, EventArgs e)
        {
            //dla przykładu!!
                Podroze p = new Podroze();
                p.ShowDialog();
            
               // MessageBox.Show((e.RowIndex + 1) + "  Row  " + (e.ColumnIndex + 1) + "  Column button clicked ");
            
        }

form.png

1
private void dg_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dg.CurrentCell.ColumnIndex == 2)
            {
               
                slowka.Add((dg[0,(dg.CurrentCell.RowIndex)].Value.ToString()));
               

            }
        
        }

Może tak :)

0

Jak na razie działa bez zarzutów, dziękuje serdecznie za pomoc :)))

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