none
string von Form2 nach Form1 übertragen RRS feed

  • Frage

  • Hallo,

    ich habe zwar schon viel im Internet zu dem Thema gefunden, aber leider klappt mein Code trotzdem nicht. Ich möchte in einer Form2 nach einem Buttondruck einen string nach Form1 übernehmen. Es wird aber nichts übertragen und eine Fehlermeldung gibt es leider auch nicht.

    public string Daten_neu { get; set; }
    private void Main()  
            {
                Form2 f = new Form2();
                
                var Daten = f.Daten_neu;
                f.Show();
                MessageBox.Show(Daten);
                
            }
    
    
    public Form2()
            {
                InitializeComponent();
            }
            
            public string Daten_neu { get; set; }
    
            public void btOK_Click(object sender, EventArgs e)
            {
                this.Daten_neu = "ttt4u";
    
            }
    

    Kann mir jemand sagen, wo der Fehler liegt?

    Vielen Dank

    Donnerstag, 14. Januar 2016 10:09

Antworten

  • Hi,
    Du hast zwei unterschiedliche Felder mit der Bezeichnung "Daten_neu", die zwar gleich benannt sind, aber voneinander nichts wissen und auch miteinander nicht in Verbindung stehen. Außerdem wird mit f.Show die Anzeige gestartet, ohne auf ein Ende zu warten. Nach dem f.Show geht es sofort mit der MessageBox weiter. Ein btOK_Click kommt da erst viel später.

    Um das Problem zu lösen, musst Du Dich zuerst entscheiden, wo denn die "Daten_neu" wirklich verwaltet werden sollen. Wenn das im Hauptprogramm gemacht werden soll, dann musst die Form2 eine Referenz auf "Daten_neu" erhalten, um dort die Daten ablegen zu können. Wenn "Daten_neu" in Form2 gehalten werden sollen, dann muss "Daten_neu" öffentlich sein und man kann mit f.Daten_neu aus dem Hauptprogramm darauf zugreifen.

    Damit das Hauptprogramm auch erst "Daten_neu" auswertet, wenn wirklich btOK_Click war, muss in geeigneter Weise darauf gewartet werden. Die einfachste Möglichkeit in Deinem Programmstück wäre ein f.ShowDialog. Zu beachten dabei ist aber auch, dass die Nachrichtenwarteschlange für die Fenster gestartet wurde. Das wird üblicherweise mit Application.Run im Main gemacht.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    Donnerstag, 14. Januar 2016 10:22
  • Hallo,

    dein Quelltext enthält keine Form1 und auch keine Datenübergabe. Es steht also nichts drin, was zum gewünschten Ergebnis führen könnte.

    Deine Frage wurde in ähnlicher Form bereits mehrfach gestellt, schau unter "Relevanteste ähnliche Threads" - dort findest Du mehrere Beiträge die das Thema ausführlichst behandeln.
    Der erste Beitrag wäre dieser hier: Daten von Form2 auf Form1 übertragen.

    Gruß


    - Florian

    Donnerstag, 14. Januar 2016 10:24

Alle Antworten

  • Hi,
    Du hast zwei unterschiedliche Felder mit der Bezeichnung "Daten_neu", die zwar gleich benannt sind, aber voneinander nichts wissen und auch miteinander nicht in Verbindung stehen. Außerdem wird mit f.Show die Anzeige gestartet, ohne auf ein Ende zu warten. Nach dem f.Show geht es sofort mit der MessageBox weiter. Ein btOK_Click kommt da erst viel später.

    Um das Problem zu lösen, musst Du Dich zuerst entscheiden, wo denn die "Daten_neu" wirklich verwaltet werden sollen. Wenn das im Hauptprogramm gemacht werden soll, dann musst die Form2 eine Referenz auf "Daten_neu" erhalten, um dort die Daten ablegen zu können. Wenn "Daten_neu" in Form2 gehalten werden sollen, dann muss "Daten_neu" öffentlich sein und man kann mit f.Daten_neu aus dem Hauptprogramm darauf zugreifen.

    Damit das Hauptprogramm auch erst "Daten_neu" auswertet, wenn wirklich btOK_Click war, muss in geeigneter Weise darauf gewartet werden. Die einfachste Möglichkeit in Deinem Programmstück wäre ein f.ShowDialog. Zu beachten dabei ist aber auch, dass die Nachrichtenwarteschlange für die Fenster gestartet wurde. Das wird üblicherweise mit Application.Run im Main gemacht.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    Donnerstag, 14. Januar 2016 10:22
  • Hallo,

    dein Quelltext enthält keine Form1 und auch keine Datenübergabe. Es steht also nichts drin, was zum gewünschten Ergebnis führen könnte.

    Deine Frage wurde in ähnlicher Form bereits mehrfach gestellt, schau unter "Relevanteste ähnliche Threads" - dort findest Du mehrere Beiträge die das Thema ausführlichst behandeln.
    Der erste Beitrag wäre dieser hier: Daten von Form2 auf Form1 übertragen.

    Gruß


    - Florian

    Donnerstag, 14. Januar 2016 10:24
  • Vielen Dank für die schnellen Antworten. Ich werde mach schauen, ob ich was passendes finde
    Donnerstag, 14. Januar 2016 14:28