Ich bin in der Mitte eines Projekts und ich versuche, ein Bool von einem Formular zum anderen zu übergeben, aber jedes Mal, wenn ich es tue funktioniert es nicht.Bool von einem Formular zu einem anderen übergeben (funktioniert nicht)
Formular 1
public bool test = false;
private void bluelineToolStripMenuItem_Click(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.Background_Mainframe_Blueline;
test = true;
}
Formular 2
private void AboutWindow_Load(object sender, EventArgs e)
{
Mainframe main = new Mainframe();
if (main.test == true) //reads test as false rather then true.
{
this.BackgroundImage = Properties.Resources.Background_About_Blueline;
}
}
Wenn die zweite Form lädt sie die bool als wahr zu lesen, aber es liest als falsch.
Bin ich den Bool falsch lesen?
Kann jemand bitte helfen.
Ist es wahr, wenn das Formular geladen? Es sieht so aus, als ob Sie test nur dann auf "true" setzen, wenn die Schaltfläche gedrückt wird, möglicherweise nachdem das Formular geladen wurde. Auch so funktioniert das nicht. Wenn Form2 in Form1 enthalten ist, wird es die Existenz von Form1 wie jedes andere Objekt in C# nicht kennen. Wenn Sie Ihr zweites Formular wirklich benötigen, um Daten aus dem ersten Formular abzurufen, können Sie Form1-Aufrufmethoden auf Form2 haben, die Daten darin mutieren. – Ares
liegt daran, dass Sie ein neues Hauptformular erstellen, das die Variablen auf ihre Standardwerte zurücksetzt, anstatt auf das Hauptformular zu verweisen, das Sie bereits erstellt haben. Erstellen Sie eine neue Klassendatei und fügen Sie die bool-Variable in diese neue Klasse ein und verwenden Sie diese in beiden Formularen. – sous2817
Warum sollte das About-Fenster einen neuen Mainframe erstellen? Ich vermute, dass Sie das tun, nur um auf ein Objekt zugreifen zu können, aber in Wirklichkeit müssen Sie auf eine vorhandene Instanz von Mainframe zugreifen. –