Wert von Form1 an Form2 übergeben

  • C#

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Wert von Form1 an Form2 übergeben

    Hi,
    ich stehe vor einem kleinen C# Problem:
    ich möchte einen Wert aus der bereits geöffneten Form1 an die aktive Form (Form2) übergeben. Ich habe das zwar schon mal geschafft aber das Projekt ist verloren gegangen.

    Aus VB kannte ich das ungefähr so:

    VB.NET-Quellcode

    1. label1.Text = Form1.TextBox1.Text


    das einzige was mir in C# einfällt ist:

    C#-Quellcode

    1. Form1 frm = new Form1();
    2. label1.Text = frm.textBox1.Text


    aber da kann ich ja nicht mehr auf die veränderte textBox zugreifen.

    Was gibt's da für Möglichkeiten das zu umgehen?

    Danke für jede Hilfe

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Marceliboy Gugst Du hier.

    C#-Quellcode

    1. using(Form1 frm = new Form1())
    2. {
    3. frm.textBox1.Text = label1.Text; // hin
    4. if (frm.ShowDialog() != DialogResult.OK)
    5. {
    6. return;
    7. }
    8. label1.Text = frm.textBox1.Text; // zurück
    9. }

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das löst mein Problem nicht.
    Also nochmal genau zum Ablauf:
    Ich starte das Programm -> Form1 öffnet sich
    ich klicke auf einen Button um Form2 zu öffnen
    Jetzt möchte ich den Wert im label haben. Das Problem bei new Form1(); ist ja, dass ich eine neue Form erzeuge und auf die alte nicht mehr zugreifen kann

    Marceliboy schrieb:

    new Form1();
    Sorry.
    Den Code habe ich bei @Marceliboy in Post #1 nachempfunden.
    Fragst Du @Marceliboy , ob Du da auch Form2 hinschreiben kannst. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hab's jetzt selber wieder hinbekommen.
    Habe in Fom1:

    C#-Quellcode

    1. ​private static Stopwatch stopw = new Stopwatch();
    2. public static TimeSpan ts()
    3. {
    4. stopw.Stop();
    5. return stopw.Elapsed;
    6. }


    und in Form2 komm ich so wieder an den Wert:

    C#-Quellcode

    1. ​TimeSpan ts = Form1.ts();

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marceliboy“ ()

    Marceliboy schrieb:

    naja, was heißt Form2 hinschreiben.

    C#-Quellcode

    1. using(FormX frm = new FormX()) // nennen wir sie FormX
    2. {
    3. frm.textBox1.Text = label1.Text; // hin
    4. if (frm.ShowDialog() != DialogResult.OK)
    5. {
    6. return;
    7. }
    8. label1.Text = frm.textBox1.Text; // zurück
    9. }
    Da, wo im Snippet textBox1 steht, trägst Du den Namen der TextBox in der FormX ein.
    Da, wo im Snippet label1 steht, trägst Du den Namen des Labels in der aufrufenden Form ein.
    Da, wo im Snippet FormX steht, trägst Du den Namen der aufzurufenden Form ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Neeee das ist doch nicht schön: label1.Text = frm.textBox1.Text

    Vor allem, die Controls müssten hierfür meines Wissens nach public sein, was man so nicht macht. Ich würde der Form2 Properties geben, mit denen man dann sauber arbeiten kann.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen