Znikające obiekty z listy

0

Cześć, mam takie pytanie, chce zrobić program do planowania dnia. Mam dwie formy, Kiedy przekazuje dane z drugiej formy do pierwszej jest ok wszystko, tworzę kopię obiektu i uzupełniam listę danymi z drugiej formy. Ale kiedy zamykam drugą formę lista obiektów w formie pierwszej jest pusta :( Dlaczego ?

public Form1()
        {
            InitializeComponent(); 
        }

        List<notatka> itemList = new List<notatka>();

        private void btnDodajNot_Click(object sender, EventArgs e)
        {
            var notatka = new Form2();
            notatka.Show();
            notatka.FormClosed += Notatka_FormClosed;
        }

        private void Notatka_FormClosed(object sender, FormClosedEventArgs e)
        {
            var a = itemList;
            foreach (var item in itemList.OrderBy(n => n.czas))
            {
                lstListaNotatek.Items.Add(item.tytul);
            }
        } 

        internal void AddItem(notatka item)
        { 
            itemList.Add( new notatka(item));  
        }
string czasNotatki;

        public Form2()
        {
            InitializeComponent();
            czasNotatki = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            labDataCzas.Text = $@"Notatkę utworzono { czasNotatki}";
        }

        private void metroButton1_Click(object sender, EventArgs e)
        {
            var item = new notatka
            {
                czas = czasNotatki,
                tytul = txtTytul.Text,
                trescNotatki = txtOpis.Text,
            };
            var form1 = new Form1();
            form1.AddItem(item);
            this.Close(); 
       }
0

Obstawiam, że dlatego:

var form1 = new Form1();
form1.AddItem(item);

Tworzysz nowego formsa i do jego kolekcji dodajesz ten element, a nawet nie robisz form1.Show() :P

Nie wiem na ile to jest poprawne, ale możesz w konstruktorze tego formsa od wprowadzania danych przesłać te listę lub nawet całego formsa (this)

Taki hello world

Form1

private List<string> _test = new List<string>();

private void button2_Click(object sender, EventArgs e)
{
    testForm tf = new testForm(_test);
    tf.Show();
}

Form2

private List<string> _list;

public testForm(List<string> list)
{
    _list = list;
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    _list.Add(textBox1.Text);
}

Chociaż to jest chyba trochę gwałt na enkapsulacji :D

0

nie zwróciłem na to uwagi :) dzięki

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