Alexander Schuc
crazy-weasel
Hi!
Gleich mal vorweg: Als Lektüre kann man sicher das aktuelle OpenBook von Galileo empfehlen. Visual C# 2010.
Nun zum Problem:
Also den Button gleich public zu setzen, würd ich vermeiden.. Da gibts sicher interessantere Arten dies zu lösen..
Hier mal eine Variante, die man auch als Anfänger recht schnell verstehen können sollte..
Das Feld in Form1 ist auf privat gesetzt, Zugriff erfolgt über eine öffentliche Eigenschaft. Im Set-Teil der Eigenschaft wird überprüft ob der neue Wert sich vom Alten unterscheidet. Wenn der neue Wert wirklich neu ist, wird dieser auf das private Feld gesetzt und eine Methode aufgerufen. Ist der neue Wert gleich, wird nichts gemacht weil sich ja nichts ändert.
In der aufgerufenen Methode kann dann jede beliebige Aktion durchgeführt werden, die wann immer sich die Variable ändert auch ausgeführt werden soll. Dabei ists ganz egal wer den Wert ändert.
In Form2 brauchts jetzt nur eine Möglichkeit die Variable in Form1 zu setzen. Dazu übergeben wir einfach einen Verweis auf Form1 im Konstruktor. Da Form2 ziemlich sicher erst nach Form1 erstellt wird, sollte das ja Problemlos möglich sein.
Nachfolgend kurz ein bischen Code wir das ungefähr aussieht. Es ist halt ein Ansatz von der anderen Seite, im Vergleich zum Vorgehen von Steiner_B. - klingt aber eher nach der richtigen Lösung zu "wie man die ganze Zeit überprüft ob eine Variable gesetzt wird. Wenn die Variable dann gesetzt wird soll dann eine Aktion stattfinden."
Noch ein Hinweis: Du solltest gleich von Anfang an beginnen deinen Variablen sinnvolle Namen zu geben. "Form1", "Form2", etc. sagen ja überhaupt nichts aus.
Grüße,
Alex
Gleich mal vorweg: Als Lektüre kann man sicher das aktuelle OpenBook von Galileo empfehlen. Visual C# 2010.
Nun zum Problem:
Also den Button gleich public zu setzen, würd ich vermeiden.. Da gibts sicher interessantere Arten dies zu lösen..
Hier mal eine Variante, die man auch als Anfänger recht schnell verstehen können sollte..
Das Feld in Form1 ist auf privat gesetzt, Zugriff erfolgt über eine öffentliche Eigenschaft. Im Set-Teil der Eigenschaft wird überprüft ob der neue Wert sich vom Alten unterscheidet. Wenn der neue Wert wirklich neu ist, wird dieser auf das private Feld gesetzt und eine Methode aufgerufen. Ist der neue Wert gleich, wird nichts gemacht weil sich ja nichts ändert.
In der aufgerufenen Methode kann dann jede beliebige Aktion durchgeführt werden, die wann immer sich die Variable ändert auch ausgeführt werden soll. Dabei ists ganz egal wer den Wert ändert.
In Form2 brauchts jetzt nur eine Möglichkeit die Variable in Form1 zu setzen. Dazu übergeben wir einfach einen Verweis auf Form1 im Konstruktor. Da Form2 ziemlich sicher erst nach Form1 erstellt wird, sollte das ja Problemlos möglich sein.
Nachfolgend kurz ein bischen Code wir das ungefähr aussieht. Es ist halt ein Ansatz von der anderen Seite, im Vergleich zum Vorgehen von Steiner_B. - klingt aber eher nach der richtigen Lösung zu "wie man die ganze Zeit überprüft ob eine Variable gesetzt wird. Wenn die Variable dann gesetzt wird soll dann eine Aktion stattfinden."
C#:
public class Form1 : Form
{
private bool myVariable = false;
public bool MyVariable
{
get { reutrn myVariable; }
set
{
if (myVariable == value)
return; // die variable würde sich nicht ändern, also keine benachrichtigung
myVariable = value;
MyVariableChanged();
}
}
private void MyVariableChanged()
{
// hier deine Aktion ausführen..
}
}
public class Form2 : Form
{
private Form1 form1;
public Form2(Form1 form)
{
this.form1 = form;
//.. Form2 hat button1
}
private void button1_Click(object sender, EventArgs ea)
{
form1.MyVariable = true;
}
}
Noch ein Hinweis: Du solltest gleich von Anfang an beginnen deinen Variablen sinnvolle Namen zu geben. "Form1", "Form2", etc. sagen ja überhaupt nichts aus.
Grüße,
Alex