MDI Fenster // Daten übertragen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Philipp0101.

    MDI Fenster // Daten übertragen

    Hallo zusammen,

    lange ist es her, dass ich programmiert habe (Mir rauscht der Kopf)….

    Ich habe via MDI ein Hauptfenster und zurzeit zwei "Kinder"-Fenster darin.

    Eines der Fenster enthält ein Datagriedview und das Andere TextBoxen welche bei "DGV1_CellContentClick" die Inhalte dort Anzeigen sollen.

    Die Beiden Fenster öffne ich via Button aus dem MDI-Container (Hauptfenster) mit:

    VB.NET-Quellcode

    1. Dim frm As New Fenster1
    2. frm.MdiParent = me
    3. frm.show()


    Im CellContentClick arbeite ich mit :

    VB.NET-Quellcode

    1. Try
    2. For i = 0 To DGV1.Columns.Count - 1
    3. Fenster1.enr.Text = DGV1.CurrentRow.Cells(0).Value
    4. Fenster1.ort.Text = DGV1.CurrentRow.Cells(1).Value
    5. 'usw.....
    6. Next
    7. Catch ex As Exception
    8. MsgBox(ex.Message.ToString)
    9. End Try

    Leider lassen sich die Daten (aus dem Datagriedview) nicht in eine andere Windows Form übertragen/anzeigen.
    Setze ich im Hauptfenster "IsmdiContainer" nun auf False lassen sich die Daten wieder übertragen.

    Ich hoffe ihr könnt mir helfen..Habe ich einen Denkfehler oder bin ich wirklich zu doof????

    PS: Gegoogelt habe ich die letzten 2 Tage......

    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Willkommen im Forum.
    Arbeitest Du tatsächlich mit Visual Basic 6 oder vielleicht doch eher mit Visual Studio? Das wäre dann VB.NET. Denn DGV und Try-Catch riechen eher nach letzterem.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Du erstellst mit Dim frm As New Fenster1 korrekt eine Form-Instanz und lässt diese als MDI-Child anzeigen. Und dann versuchst Du mit Fenster1.enr.Text eine CE-Manipulation im selbigen Form zu erreichen. Das geht nicht. Du müsstest schreiben: frm.enr.Text = .... Aber das geht deshalb nicht, weil Dein DGV-Form frm nicht kennt.

    passende Lektüre:
    Dialoge richtig instanziieren
    Warum »Form1.Show« und Co. einem irgendwann ins Bein schießen

    Es gibt 2 Wege: Du erzeugst in der DGV-Formklasse eine Sub, der Du eine Fenster1-Forminstanz übergibst. Dann kann die DGV-Forminstanz später frm direkt ansprechen und manipulieren. Das ist aber eher der schlechtere Weg, weil die DGV-Formklasse plötzlich von Dingen weiß, von denen es nichts wissen sollte. Daher Weg Nr. 2: Das DGV-Form bietet ein Event an, in dem die aktuell angeklickten DGV-Daten an einen Interessenten gefeuert werden. Das kann dann das Hauptform sein, welches die Daten per direkter Manipulation an frm weitergibt, das kann aber auch die konkrete Fenster1-Klasse (also frm) selbst sein, welche sich dann selber um die TextBox-Manipulation kümmert. Wie Du willst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Philipp0101 schrieb:

    VB.NET-Quellcode

    1. Fenster1.enr.Text = DGV1.CurrentRow.Cells(0).Value
    Wenn Fenster1 der Name der Klasse ist, greifst Du ins Nirvana, Du musst die Instanz verwenden.
    Die Links hat @VaporiZed gepostet, verinnerliche das. Mach nicht weiter, bevor Du das in Ansätzen verstanden hast.
    Wenn nicht, wirst Du viele unnötige Posts schreiben, was dann den Verdacht der Beratungsresistenz nahelegt.
    Sorry.
    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!