Problem z przekazaniem referencji obiektu List<string> jako DataSource do ListBox

0

Mam chyba jakies zacmienie, prosiłbym o pomoc.
Mój uproszczony kod wygląda jak niżej. w tej formie jeżeli klikne button to label sie aktualizuje zgodnie z oczekiwaniami ale na listbox nic sie nie dodaje:

    public interface IWidok 
    {
        void WyswietlPodsumowanie();
        void PowiazDane();
    }

    public class Presenter
    {
        private IWidok view;

        public int Licznik { get; set; }
        public List<string> ListaWczytan;

        public Presenter(IWidok widok)
        {
            view = widok;
            Licznik = 0;
            ListaWczytan = new List<string>();
        }

        public void Klikniecie(string textBox)
        {
            Licznik++;
            ListaWczytan.Add($"{textBox}_{Licznik.ToString()}");
            view.WyswietlPodsumowanie();
        }

        public string ZwrocPodsumowanie()
        {
            return $"Wczytanych {ListaWczytan.Count}[szt.]";
        }
    }

    public partial class Form1 : Form, IWidok
    {
        Presenter presenter;

        public Form1()
        {
            InitializeComponent();
            presenter = new Presenter(this);
            PowiazDane();
        }

        public void PowiazDane()
        {
            listBox1.DataSource = presenter.ListaWczytan;
            listBox1.ClearSelected();
        }

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

        public void WyswietlPodsumowanie()
        {
            label1.Text = presenter.ZwrocPodsumowanie();
        }
    }

ale jezeli zmienie kod tak:

public partial class Form1 : Form, IWidok
    {
        Presenter presenter;

        public Form1()
        {
            InitializeComponent();
            presenter = new Presenter(this);
            //PowiazDane();
        }

        public void PowiazDane()
        {
            listBox1.DataSource = presenter.ListaWczytan;
            listBox1.ClearSelected();
        }

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

        public void WyswietlPodsumowanie()
        {
            label1.Text = presenter.ZwrocPodsumowanie();
            PowiazDane();
        }
    }

to do listbox dodany jest pierwszy obiekt ale potem listbox zamiera i nic sie nie dodaje, label aktualizuje sie zgodnie z oczekiwaniami.
O co tu chodzi?
Cos gubię w tym jak zachowują się obiekty przekazywane przez referencje?

0

jest i rozwiazanie:

public partial class Form1 : Form, IWidok
    {
        Presenter presenter;
        BindingSource bs = new BindingSource();

        public Form1()
        {
            InitializeComponent();
            presenter = new Presenter(this);
            bs.DataSource = presenter.ListaWczytan;
        }

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

        public void WyswietlPodsumowanie()
        {
            label1.Text = presenter.ZwrocPodsumowanie();
            listBox1.DataSource = bs;
            bs.ResetBindings(false);
        }
    }

Youtube rules

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