Alle Forms meiner Anwendung auflisten und darauf zugreifen.

  • Allgemein

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Slayers.

    Alle Forms meiner Anwendung auflisten und darauf zugreifen.

    Hallo liebe Gemeinde...

    Ich habe mal wieder eine Frage wozu ich gerne ein Paar antworten hätte.

    Und zwar möchte ich gerne folgendes realisieren :

    Ich habe einen TCP Clienten der Nachrichten Empfängt und diese Verarbeitet. Jetzt möchte ich gerne einen Privaten Chat erstellen, Also soll wenn der Client eine Nachricht empfängt überprüfen ob eine Form schon geöffnet ist oder nicht.

    Wenn die Form schon geöffnet ist, dann soll der empfangene Text in eine Textbox die in der Form ist eigefügt werden.
    Wenn nicht soll eine neue Form erstellt werden, und der Text in der in dieser Form befindlichen Textbox eingefügt werden.

    Sprich mit anderen Worten will ich nichts anderes machen, als einen Privaten Chat den man von MSN, ICQ, Skype, usw. kennt.

    Wenn ihr andere Möglichkeiten habt, dieses Vorhaben zu verwirklichen wäre ich euch um eure Hilfe sehr dankbar.

    Mit freundlichen Grüßen
    Slayers | Flash-Messenger Developer
    Du könntest alle Fenster in einer Liste auflisten und diese dann durchgehen.
    du hast ja eine Form als Prototyp die du immer wieder neu erstellst, oder ?
    diesem Prototyp gibst du eine öffentliche Prozedur in der du alles machst was du halt von außen ansprechen willst mit dementsprechenden Parametern.

    dann machst du eine List(Of Prototype) und rufst dann immer die Funktionen/Subs auf.
    Woran scheiterts?
    Am Auflisten der Formen deiner Anwendung (Auflistung: Application.Openforms)?
    Am Zugriff auf eine Textbox auf einer anderen Form (Zugriff: Form102.tbwhatever.text="")?
    Am Erstellen einer neuen Form? (public frmChat as new ChatForm)?

    Hoffe, irgendetwas davon passt. :)
    Es scheitert daran das ich nicht weiß wie ich auf die Textbox einer zur Laufzeit erstellten form zugreife.

    Wie ich eine Form zu Laufzeit erstelle weiß ich.

    Wie greife ich denn allgemein erstmal auf eine Dynamisch erstellte form zu ?
    Haben wir dir doch gesagt. Du listest deine Formen auf (immer wenn du eine hinzufügst dann addest du sie auch deiner Liste) und dann kannst du jeder Zeit mit Liste(index) deine Form aufrufen. Und dann entweder direkt die Textbox bearbeiten wie kurt vorgeschlagen hat oder wie ich mit einer öffentlichen Prozedur.
    So Ich kann euch sagen, das es natürlich geklappt hat.
    Es ist eigentlich ganz einfach.

    Einfach eine liste deklarieren :

    VB.NET-Quellcode

    1. Private OffeneForms As New List (Of Frm_Main)


    und jedesmal bei neuerstellen einer Form die Form der Liste mit

    VB.NET-Quellcode

    1. OffeneForms.Add(form)

    hinzufügen.

    Das ganze sieht dann ungefähr so aus (Aus dem Kopf geschrieben)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private L as new list (of frm_Test) 'Hier wird der Liste die Form zugewiesen
    3. Private Sub NeueFormErstellen
    4. Dim Test as new frm_Test ' Neue Variable deklarieren
    5. Test.text = "Dies ist eine Dynamisch erstellte Testform" 'Wir weisen der Form einen Text zu
    6. Test.show() 'Und Zeigen die Form Schlussendlich an
    7. L.Add(Test)'Hinzufügen der Form in die Liste, damit wir mit der Form Auch arbeiten können bzw. Diese wiederfinden können.
    8. End Sub
    9. Private sub FormFinden (Byval NameDerForm as String)
    10. for each F as frm_Test in L 'Für jede Form die in der liste existiert soll etwas Passieren
    11. if NameDerForm = F.Text then 'Wir schauen ob der Name der Form unserer Variable entspricht
    12. msgbox("Die form mit dem Namen " & NameDerForm & " wurde gefunden.")
    13. F.show()' Wir Zeigen die Form an.
    14. F.Focus()' Und setzten den Fokus auf die Form.
    15. else 'Wenn die Form nicht gefunden worden ist, Dann Passiert etwas anderes.
    16. msgbox("Die Form mit dem Namen " & NameDerForm & " wurde nicht gefunden.")
    17. end if
    18. next
    19. End sub
    20. end Class


    Der Aufruf lautet dann wie folgt

    VB.NET-Quellcode

    1. FormFinden ("Dies ist eine Dynamisch erstellte Testform")