Jak uzyskać dostęp do listy z innego formularza
Mam dwie formy, w Form1 a tworzę obiekty z klasy i umieszczam na liście (lista obiektów). potem mam kolejną listę ciągów, które mają być źródłemForm2
- lista ciągów zawiera elementy, które są atrybutami obiektu zamienionymi na ciągi.Form2
Po otwarciu należy odczytać dane z listy łańcuchów i umieścić je w liście. Problem polega na tym, że nie widzi danych. Mogę uzyskać dostęp do danych wForm1
, więc jestem pewien, że lista jest wypełniona, ale Form2 nie może uzyskać dostępu do danych - jak to rozwiązać?
Próbowałem różnych pomysłów zaczerpniętych z forum i innych źródeł, ale żaden z nich nie działał dla mnie. to, co działało, zapełniało listę, która ma być źródłem danych w Form1 'komponent inicjujący', ale nie jest to idealne rozwiązanie, ponieważ obiekty są tworzone po kliknięciu przycisku. teraz umieściłem listę na górze klasy Form1, ale nadal jest wypełniana przez kliknięcie przycisku - i nie działa, pole listy jest nadal puste.
Oto kodForm1
:
public partial class Form1 : Form
{
public House MyHouse = new House();
public List<string> allPeopleSource = new List<string>();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Person p1 = new Person("Simon", 33);
Person p2 = new Person("Peter", 23);
MyHouse.IsInhabitedBy(p1);
MyHouse.IsInhabitedBy(p2);
allPeopleSource.Add(p1.Name + " | " + p1.Age.ToString());
allPeopleSource.Add(p2.Name + " | " + p2.Age.ToString());
Form2 lista = new Form2();
lista.ShowDialog();
}
}
Oto kodForm2
:
public partial class Form2 : Form
{
Form1 main = new Form1();
List<string> allPeople = new List<string>();
public Form2()
{
InitializeComponent();
foreach (string s in main.allPeopleSource)
{
allPeople.Add(s);
}
foreach (string s in allPeople)
{
lsbResidents.Items.Add(s);
}
}
}
Doceniam każdą pomoc.