Problem mit Daten in neue Form laden

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Problem mit Daten in neue Form laden

    Liebe Community,

    ich habe derzeit ein kleines Problem welches ich einfach nicht gelöst bekomme.

    Ich habe eine Hauptform von welcher ich eine neue Form öffnen möchte. Dies mach ich wie folgt:

    Form1 = Hauptform
    Form2 = Die zu öffnete Form
    Form3 = Weitere Form

    In Form1 sag ich:

    VB.NET-Quellcode

    1. Dim Form2 As New Form2
    2. Form2.show



    soweit alles gut, er öffnet mir die Form2.
    In Form2 habe ich ein Textfeld welches sich einen Eintrag von einer dritten Form (Form3) holen soll.
    In Form2 kann man mit betretten des Textfelde und drücken der Entertaste die Form3 öffnen:


    VB.NET-Quellcode

    1. Dim Form3 As New Form3
    2. Form3.show


    In Form3 habe ich jetzt einen Eintrag (zB einen Namen) welchen ich auswählen kann!
    Mit Bestätigung meiner Auswahl zB via Button möchte ich jetzt das der Ausgewählte Name in Form2 in das Textfeld übernommen wird.


    VB.NET-Quellcode

    1. form2.textbox1.text = name.text
    2. Me.Close


    Allerdings tut er das nich.! Ich bin mir sicher, dass das Problem darin besteht das ich sage er soll Form2 und Form3 als Neue Form aufrufen, allerdings bin ich Planlos wie ich dennoch die offene Form ansprechen kann.

    Ich hoffe ich hab mein Problem halbwegs verständlich erklärt und bitte um Hilfe (und absolution)! :)
    Nothing to see :whistling:
    Bitte mach sowas nicht:

    VB.NET-Quellcode

    1. Dim Form2 As New Form2
    2. Form2.show
    Das führt mit Sicherheit in Verwechslungen, wenn du eine Form2-Instanz erstellst, und ihr den Namen Form2 gibst. Weil da hast du ein Objekt "Form2", und den Datentyp "Form2" hattest du ja vorher schon.
    Und diese Verwechslungen sind auch mit Sicherheit an deim Problem beteiligt.

    Mach also so

    VB.NET-Quellcode

    1. Dim frm2 As New Form2
    2. frm2.show
    jetzt heißt dein Objekt "frm2" und hat den Datentyp "Form2" - das kann man auseinander halten

    Ändere alle anneren Codes entsprechend ab, dann sollte die Verwechslung sichtbar werden.
    @ThomasProj:
    Du meinst das ich den Text als Variable übergeben soll?

    VB.NET-Quellcode

    1. Dim name.text as String = nametxt
    ???


    @ErfinderDesRades:
    Dachte mir schon das sowas Problematisch werden kann^^
    Aber selbst wenn ich das so ändere, löst das mein Problem? oder weiss er dann das ich frm2 meine?! :)
    Nothing to see :whistling:
    Dein Problem bist du - der du deinen Code nicht verstehst.
    Die Lösung bestehst darin, dir die Fehler darin zu zeigen - oder besser: es hinzukriegen, dass du sie selber siehst. Deshalb mach mal, was ich dir vorschlage.

    (ThomasProj's Einlassung halte ich für Stuss, denn natürlich wirds sich mit Variablen lösen, weil ohne Variablen kann man ja garnet programmieren)
    @ErfinderDesRades:
    Irgendwie komm ich nicht drauf :X

    Ich hab beides nun Probiert.

    VB.NET-Quellcode

    1. Dim frm2 As New Form2
    2. frm2.Show()


    VB.NET-Quellcode

    1. Dim frm3 As New Form3
    2. frm3.Show()


    VB.NET-Quellcode

    1. Dim name1 As String = name.text
    2. form2.textbox1.Text = name


    Geht aber nicht :( - und wenn ich frm2 sag schreibt er einen Fehler "frm2 wurde nicht deklariert...
    Ich muss doch in Form3 irwie sagen das es sich um frm2 handelt! Oder?
    Nothing to see :whistling:
    doch - du bist genau dabei, drauf zu kommen. :thumbsup:

    VB.NET-Quellcode

    1. form2.textbox1.Text = name
    siehst du, dass das Unfug ist?
    Form2 ist ein Datentyp, es ist kein Objekt. Leider lässt der vb-Compiler diesen Unfug zu, aber Unfug isses trotzdem :thumbdown:

    Das Problem: das frm3-Objekt kennt nicht das frm2-Objekt, von welchem es erstellt wurde.

    Annersrum schon: Das frm2 Objekt kennt das frm3-Objekt - es hat es ja instanziert.
    Das sinnigste wird sein, du löst das nach dem Entwurfsmuster eines Dialogs. Bei einem Dialog wartet das Owner-Form, bis der Dialog geschlossen wurde, und wertet dann die Dialog-Eingabe aus.
    gugge DialogResultSample
    Okay, jetzt versteh ich das soweit^^
    Aber leider lässt die komplexität was dahinter steckt keinen Dialog zu, auch wenn ich es eben getestet habe und funktioniert hat, kann ich hierzu keinen Dialog machen.
    Danke trotzdem für deine Hilfe, bin gerade um ein großes Stück schlauer geworden :)

    Zur Info, ich hab es jetzt anders Gelöst (Ist sicherlich nicht die Feine Art, aber das Programm soll ja nicht öffentlich benutzt werden ;)

    Lösung - Eintrag in Form2:

    VB.NET-Quellcode

    1. Dim form2 As form3 = New form3
    2. form3.form2 = Me
    3. form3.Show()


    Lösung - Eintrag in Form3:

    VB.NET-Quellcode

    1. Friend Form2 As Form2
    Nothing to see :whistling:
    Hey, das stimmt so nicht!
    Ich bin durchaus gewillt zu lernen und mich berauschen zu lassen, allerdings ist mir für das was ich Programmiere ein Dialog einfach viel zu "komplex" bzw Aufwändig => denn bis ich die Logik dahinter ganz verstanden habe (was bei mir nun mal sehr lange dauert <.<)...lass mich es anders Formulieren... ich bin ein ungeduldiger Mensch und somit (gerade im Moment) keine Lust mich in was neues einzuarbeiten wenn es derzeit in meinem Programm 50 andere Dinge gibt die ich bis jetzt noch nicht ganz verstehe die für die Funktionalitäten Aktuell wichtiger sind.
    Sprich: Ich möchte mich nicht auf zu viele Dinge gleichzeitig konzentrieren, denn dabei gehen eventuell Informationen verloren! :)
    Ich habe den Thread Hier, und deine Anleitung in meine Browser Fav getan, und wenn ich Zeit dazu finde und es für mein Programm benötigt wird (was definitiv der Fall sein wird) dann werde ich darauf zurückgreifen.

    Ich bin dir sehr Dankbar und möchte bzw wollte dich keinesfalls damit beleidigen :(
    Nothing to see :whistling:
    Naja wenn du eine Property auf einer anderen Form ändern willst, solltest du die entsprechenden Modifiers (z.B. auf Friend oder Public) definieren:



    Dann kannst du auch von einer anderen Form darauf zugreifen, das klappt dann auch so:

    VB.NET-Quellcode

    1. Dim edit_Entry_Form as New edit_entry
    2. edit_Entry_Form.cb_cat.text = dg.Item(2, i).Value.ToString
    3. edit_Entry_Form.cb_states.text = dg.Item(3, i).Value.ToString
    4. edit_Entry_Form.showDialog(Me)
    : NV Updater | Nvidia Driver Update Tool
    @Andynator:: Wenn Du schon mal dabei bist, gugst Du hier.
    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!