Liste aus anderer Klasse heraus bearbeiten

kletoris

Grünschnabel
Hallo,

ich habe ein Problem ich möchte die Werte mehrerer Textboxen in eine vorgefertigte Liste schreiben aber wenn ich dann von der Ursprungsklasse die werte kontrolliere sind sie immer noch so wie vorher. Ich hoffe ihr könnt mir helfen!

Hier der Code:
Code:
public void button1_Click(object sender, EventArgs e)
        {
            Form1 Hauptform = new Form1();

            for (int i = 0; i < Hauptform.BedürfnisListe.Count; i++)
            {
                foreach (Control c in this.Controls)
                {
                    if (c.GetType().Name.ToString() == "TextBox")
                    {
                        if (c.Name == Hauptform.BedürfnisListe[i].Name)
                        {
                            if (c.Text != string.Empty)
                            {
                                Hauptform.BedürfnisListe[i].Bonus = Convert.ToInt32(c.Text);
                            }
                            break;
                        }
                    }
                }
            }

            this.Close();
        }

MfG

PS: Ich bin noch ein Anfänger
 
Ist die ganze Methode zufällig in der Klasse Form1?
Du darfst keine neue Instanz erstellen, sondern solltest die bestehende bearbeiten
 
Wenn du eine neue Instanz erstellst ( auch wenn es eine Instanz der selben Klasse wie die aufrufende Klasse ist ) veränderst du nur die Werte der neuen Instanz nicht aber der aufrufenden.
Hier ein Beispiel
C#:
public partial class Form1 : Form
    {
        public string testString = "Hauptzustand";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (Form1 newForm = new Form1())
            {
                newForm.testString = "Neuer Zustand";
                MessageBox.Show(newForm.testString); // Neuer Zustand
            }
            MessageBox.Show(testString); // Hauptzustand
        }
    }

Noch ein Tipp:
C#:
c.GetType().Name.ToString() == "TextBox"
//schöner und kürzer wäre
c is TextBox
 
Zurück