Der Grund ist, dass du in Form2.Form2_Load ein neues Form1-Objekt erzeugst. Dort wurde der Button dann noch nicht geklickt. Wenn du in Form2 auf genau das Form1-Objekt zugreifen möchtest, welches das Form2-Objekt erstellt hat, dann müsstest du das irgendwie übergeben, zum Beispiel im Konstruktor:
private bool isActive = false;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
isActive = true;
f2.Show();
}
public bool GetIsActive
{
get { return this.isActive; }
}
Alles anzeigen
Form2
private Form1 parent;
public Form2(Form1 parent)
{
InitializeComponent();
this.parent = parent;
}
private void Form2_Load(object sender, EventArgs e)
{
label2.Text = parent.GetIsActive.ToString();
}
Alles anzeigen
Das ist natürlich nur eine unter vielen Möglichkeiten, es hängt im wesentlichen davon ab, was du tun möchtest. Du könntest Form2 auch eine entsprechende Property geben, die Form1 direkt nach dem erzeugen setzt, oder Form1 zu einem Singleton machen bzw. anderweitig statisch zugriff auf eine Form1-Instanz erlauben.
Eine kleine Nebenbemerkung: Ein besseres Benennungsschema für Properties ist es, Dinge wie Get/Set wegzulassen - das ergibt sich nämlich ohnehin aus der Definition der Property und entspricht der Art des Zugriffs eher als ein Methodenname.