Datenaustausch zwischen verschiedenen Forms

  • VB.NET
  • .NET 4.5

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

    Datenaustausch zwischen verschiedenen Forms

    Hallo Leute,
    ich habe ein ''kleines'' Problem und hoffe, dass mir hier jemand dabei helfen kann. Es scheint keine große Kunst zu sein, dennoch steh ich gerade hart auf dem Schlauch...

    Folgendes: Ich habe mir eine Anwendung gebaut, die momentan zwei Forms besitzt.
    In der erste Form bzw. in der MainForm lauscht ein TCP-Client, der Daten von meinem TCP-Server empfängt. Die empfangenen Daten lasse ich mir in der MainForm in einer RichTextBox anzeigen.

    Meine zu empfangene Nachricht lautet z.B //SERVER/ARDUINO/WOHNZIMMER/TEMPERATUR@23GRAD/LUFTFEUCHTE@58%

    Diese Nachricht splitte ich mit dem ''/'' bzw ''@'' in ein Array(), damit ich so z.B Ort, Temperaturen und Luftfeuchte extrahieren kann.

    Da ich mir nicht alle Daten in der in MainForm anzeigen lassen möchte, habe ich mir eine zweiten Form mit einer RichTextBox angelegt.

    Nun, wie bekomme ich also die Daten aus dem Array() in der MainForm in der RichTextBox in der zweiten Form angezeigt?

    Lieben Gruß
    silentshadow

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

    @SilentShadow Wenn die zweite Form in der ersten instanziiert wurde, gib der zweiten eine entsprechende Methode und ruf die auf.
    Das sieht nach einem nicht modalen Dialog aus.
    Gugst Du hier: Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @RodFromGermany Also ich habe mich mal durch deine Informationen geklickt und bin leider noch unschlüssig, wie ich mein Problem lösen kann. Ich hatte mir in meinem zweiten Form schon verschiedene Methoden erstellt um die "RichTextBox" zu füllen. Habe es mit Propertys, Delegaten und öffentlichen Variablen mit gegenseitigen Imports ausprobiert und diese aufgerufen. Führte aber bis jetzt nicht zu meinem Erfolg.

    Die Idee ist momentan eher diese, dass ich mehrere Form-Instanzen aus meiner zweiten Form instanziieren möchte und diese dann wieder über den mitgelieferten fInstance.Name identifizieren zu können, um dann wiedrum die Elemente dieses Forms bedienen zu können.

    Aber geht es nicht irgendwie einfacher? So das sich einfach zwei z.B "RichTextBoxen" über mehrere Forms synchronisieren können?

    Dennoch hier mal der Code, den ich mir bis jetzt zusammengefrickelt habe.

    VB.NET-Quellcode

    1. Private Sub LoadMultipleForms()
    2. OpenFormInstance("Datalogger: Wohnzimmer", "wohnzimmer")
    3. OpenFormInstance("Datalogger: Dachboden", "dachboden")
    4. End Sub
    5. Private Sub OpenFormInstance(fText As String, fName As String)
    6. Dim fInstance As New SecondForm
    7. fInstance.Text = fText
    8. fInstance.Name = fName
    9. If IsFormLoaded(fName) = False Then
    10. fInstance.RichTextBox1.AppendText("FormName: " & fName)
    11. fInstance.ShowDialog()
    12. End If
    13. End Sub
    14. Public Function IsFormLoaded(ByVal sName As String) As Boolean
    15. Dim bResult As Boolean = False
    16. For Each oForm As Form In Application.OpenForms
    17. If oForm.Name = sName Then
    18. bResult = True : Exit For
    19. End If
    20. Next
    21. Return (bResult)
    22. End Function
    @SilentShadow Male mal eine Skizze, woraus hervorgeht, welche Form welche andere Form aufruft und welche Form welche andere Form mit Text bestückt.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @SilentShadow Das Parent-Window ruft Methoden auf, das Child-Window sendet Events.
    Mehrere Child-Windows sollten untereinander via Parent-Window kommunizieren.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!