Form durch andere verändern?

2 Antworten

Dein Form1-Objekt benötigt eine Referenz auf die Form2-Instanz. Du kannst sie an ein Property weiterreichen (das nicht statisch sein sollte, denn das wäre der erste Einstieg in ein Missdesign) oder über einen Parameter einer Methode.

Dazu ein Beispiel:

public partial class Form1 : Form
{
  private Form _otherForm;

  public Form1(Form form)
  {
    _otherForm = form;
    InitializeComponent();
  }

  private void button1_Click(object sender, System.EventArgs e)
  {
    _otherForm.BackColor = Color.Red;
  }
}

Deine Form1-Klasse bekommt hier ein Feld, welches das andere Form-Objekt zwischenspeichern wird. Dieses wird über den Konstruktor als Parameter hineingereicht und dann dem Feld zugewiesen.

In dem Event Handler für den Buttonklick wird die Hintergrundfarbe des anderen Form-Objekts geändert. Voraussetzung ist also für deine Form1, dass du auf ihr bereits einen Button angelegt und sie mit dem Handler verknüpft hast. Beides lässt sich über den Form Designer lösen. Schön wäre es nun noch, dem Handler einen anderen Namen zu geben, der seine Tätigkeit (Änderung der Farbe) besser beschreibt. In meinem obigen Snippet verzichte ich darauf.

So werden die Objekte erstellt:

var otherForm = new Form2();
var form = new Form1(otherForm);
form.Show();
otherForm.Show();

Du könntest ein public static property aufmachen und dann wenn es gesetzt wird, soll das property das Bild setzen. Kann sein, dass du dann mit einem invoke oder so arbeiten musst. Musst du mal probieren