Hallo Franklin,
mir fallen da folgende Möglichkeiten ein:
1. Form1 an Form2 übergeben -
geringer Aufwand
Einfach einen 2. Konstruktor schreiben, der die entsprechende Form annehmen kann.
Der Konstruktor sollte so aussehen:
public class Form2
{
// Standardkonsturktor nicht verändern, dient dem Designer
public Form2()
{
InitializeComponent();
}
// Das ist der neue Konstruktor
public Form2(Form1 form)
: this() // damit wir der obere Konstruktor mit aufgerufen
{
this.form1 = form;
}
private Form1 form1;
// ...
}
Dann müsste man nur noch die Werte angleichen, je nachdem was du erreichen möchtest.
2. Interfaces benutzen -
etwas aufwendiger, aber nützlicher
Interfaces brauch man eigentlich erst, wenn man auf verschiedenen Objekten dieselben Aktionen ausführen möchte. Aber statt die ganze Form zu übergeben (und am Ende noch die Modifer für die ListBox und die TextBox auf "public" zu stellen, empfehle ich Interfaces. Auf diesen Weg kann man die Zuweisung der Daten für die Controls auf Form1 besser steuern.
Im Prinzip übergibt man dann noch immer die Form1 über den Konstruktor (siehe oben). Aber anstatt den Datentyp bei Form1 zu belassen, ändert man ihn auf z.B. IForm1.
Das Interface richtet sich danach, was für Daten man übergeben möchte.
Wenn du nur mit der ListBox.DataSource-Eigenschaft und der TextBox.Text-Eigenschaft arbeitest, dann könnte das mit dem Interface so aussehen:
EDIT: kleine Korrektur am Code ;)
interface IForm1
{
string TextBox1_Text { get; set; }
object ListBox1_DataSource { get; set; }
}
pubic class Form1 : IForm1
{
public Form1()
{
InitializeComponent();
}
// ...
string IForm1.TextBox1_Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
object IForm1.ListBox1_DataSource
{
get { return this.ListBox1.DataSource; }
set { this.ListBox1.DataSource = value; }
}
}
andere Möglichkeiten sind Events von den Controls von Form2 in der Form1 zu verarbeiten und noch viele mehr...
Vielleicht konnte ich dir ja weiterhelfen ;)