Przekazywanie listy z formy do formy

0

Witam. Czy ktoś mógłby mi pomóc odnośnie przekazania listy z jednej formy do drugiej?
Nie wiem jaki parametr przekazac do drugiej formy.
Mam oto taki programik:

Forma główna:

 namespace kontakty
{
    public partial class Form1 : Form
    {
        ListaKontaktow lk;
        int numberElement;
        Kontakt k;
        const string FILE = "data.xml";

        public Form1()
        {
            InitializeComponent();
            this.lk = RSFile.Open(FILE);

            if (this.lk.Ilosc() > 0)
                numberElement = 0;
            else
                numberElement = -1;
            ShowElement();
        }


        private void szukaj_Click(object sender, EventArgs e)
        {
            (new Szukanie(, this)).ShowDialog();
        }

    }
} 

Druga forma

 namespace kontakty
{
    public partial class Szukanie : Form
    {
        Form1 owner;
        List<Kontakt> lista;

        public Szukanie(List<Kontakt> lista, Form1 owner)
        {
            InitializeComponent();
            this.owner = owner;
            lista = new List<Kontakt>();
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {

              
        }
    }
}

Klasa ListaKontaktow

namespace kontakty
{
    public class ListaKontaktow
    {
        private List<Kontakt> lista;
        public ListaKontaktow()
        {
            this.lista = new List<Kontakt>();
        }

        public void Dodaj(Kontakt k)
        {
            this.lista.Add(k);
        }

        public void Usun(Kontakt k)
        {
            this.lista.Remove(k);
        }

        public int Ilosc()
        {
            return this.lista.Count;
        }
         
        public Kontakt Pobierz(int i)
        {
            if(this.lista.Count > i)
                return this.lista[i];
            
            return null;
        }

        public void ZaladujListe(List<Kontakt> lista)
        {
            this.lista.Clear();
            for (int i = 0; i < lista.Count; i++)
                this.lista.Add(lista[i]);
        }

        public List<Kontakt> Pobierz()
        {
            return lista;
        }
    }
}
0

Przekaż obiekt

ListaKontaktow lk;

Gdyż obiekty są typu referencyjnego więc dokonując zmiany w Formie 2 na tymże obiekcie będą one także widoczne na pierwszej formie

(new Szukanie(lk, this)).ShowDialog();

a w drugiej formie

 
Form1 owner;
        List<Kontakt> lista;
 
        public Szukanie(ListKontaktow lista, Form1 owner)
        {
            InitializeComponent();
            this.owner = owner;
            lista = new List<Kontakt>();
 
        }

Zamiast List<Kontakt> lista; stwórz obiekt klasy ListaKontaktów a w konstruktorze przypisz

ListaKontaktow lista;
 
        public Szukanie(ListaKontaktow lista)
        {
            InitializeComponent();
            
            this.lista = lista;
 
        } 

Tak powinno działać (tak mi się wydaje , sprawdź ;)

0

A teraz gdy mam textRichBoxa w formie drugiej i chciałbym w nim wyświetlić elementy Kontaktu z tej listy (imie, nazwisko, itd.), jak to mam zrobic? Dopiero poznaje to środowisko i jestem ciemny, dlatego liczę na wyrozumiałośc ;)

0

Pisze z telefonu więc nie będę miał opcji potwierdzenia moich teorii.:p
Na początku pokaż klase/strukturę obiektu kontakt.

0
namespace kontakty
{   
    [XmlRoot("K")]
    public class Kontakt
    {
        [XmlElement("plec")]
        public bool plec;
        [XmlElement("imie")]
        public string imie;
        [XmlElement("nazwisko")]
        public string nazwisko;
        [XmlElement("adres")]
        public string adres;
        [XmlElement("telefon")]
        public string telefon;
        [XmlElement("email")]
        public string email;
        [XmlElement("data")]
        public DateTime data;

        public Kontakt(bool plec, string imie, string nazwisko, string adres, string telefon, string email, DateTime data)
        {
            this.plec = plec;
            this.imie = imie;
            this.nazwisko = nazwisko;
            this.adres = adres;
            this.telefon = telefon;
            this.email = email;
            this.data = data;
        }

        public Kontakt() { }
    }
}
0

Przeszukujesz całą listę pętla foreach z każdego obiektu ładujesz dane do string-a i dopisujesz do richtextbox1+=twój string + "\n" :)

0

Mógłbyś mi pomóc jak to zrobić? Męczę sie z tym i nic mi nie wychodzi.

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