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?