Private Unterhaltungen in Messenger wie Realisieren

  • Allgemein

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

    Private Unterhaltungen in Messenger wie Realisieren

    Guten Abend zusammen,

    Ich habe mal wieder Folgendes Problem :

    Ich möchte bei meiner Chat Software gerne Private Unterhaltungen implementieren dazu brauche ich Allerdings ein wenig Hilfe.

    In der Listview, wo die Kontakte aufgelistet werden öffne ich mit einem Doppelklick auf einen Kontakt eine Private Unterhaltung. Sobald ich allerdings auf den 2ten Kontakt doppelt klicke, und die Form neu Instanzieren möchte spuckt mir mein Visual Studio folgenden Fehler aus.

    Quellcode

    1. Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden.



    Folgender Code, ist mein Problem :

    VB.NET-Quellcode

    1. Private Sub lv_online_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lv_online.DoubleClick
    2. Try
    3. If Not lv_online.SelectedItems.Count = 0 Then 'Wenn ich ins Leere klicke passiert nichts
    4. If Unterhaltungen.Count = 0 Then 'Wenn keine Instanzen der frm_private geöffnet sind dann...
    5. Dim F As New frm_private ' Neue Variable Deklarieren
    6. F.Text = lv_online.SelectedItems.Item(0).Text 'Form einen Text zuweisen, damit man die Formen unterscheiden kann
    7. F.Show() ' Die Form anzeigen
    8. Unterhaltungen.Add(F) 'Und der Liste hinzufügen
    9. Else 'Wenn eine frm_private schon instanziert worden ist, dann...
    10. For Each Priv As frm_private In Unterhaltungen 'Jede Instanz der frm_private durchgehen
    11. If Priv.Text = lv_online.SelectedItems.Item(0).Text Then 'Wenn die Form vorhanden ist, dann...
    12. Priv.Focus() ' Fokus drauf setzen
    13. Else 'Wenn keine der instanzen, der frm_private den Namen des Angeklickten Kontaktes hat, dann...
    14. Dim Fr As New frm_private ' Neue Variable deklarieren
    15. Fr.Text = lv_online.SelectedItems.Item(0).Text ' Den Text des Angeklickten Kontaktes zuweisen
    16. Fr.Show() 'Die Form anzeigen lassen
    17. "Fehler" ## Unterhaltungen.Add(Fr) ## "Fehler"
    18. 'Hier Tritt der fehler deswegen auf weil ich beim Durchsuchen, der Liste einen Eintrag hinzufügen möchte
    19. 'was Natürlich nicht geht
    20. End If
    21. Next
    22. End If
    23. End If
    24. Catch ex As Exception
    25. MsgBox(ex.Message) ' Die Fehlermeldung wird zum Testen in eine Messagebox ausgegeben
    26. End Try
    27. End Sub



    Ich Weiß auch wodran es Liegt, sollte ja auch jedem einleuchten woran es liegt.
    Nur meine Frage an euch ist jetzt wie ich das jetzt umgehen kann ?

    Danke
    Mit freundlichen Grüßen
    Slayers
    Hallo,

    du hättest die Möglichkeit, einen Clone von deinem Objekt Unterhaltung zu ziehen. Diesen dann gegebenfalls bearbeiten und über das Original Objekt zurück zu schreiben.
    Alternative könntest du eine For Schleife verwenden, anstatt einer For Each.

    Gruß Sam
    Der Fehler sollte eigentlich erst beim Wiederkehren in Zeile 10 auftreten. Willst du wirklich für jedes Privatchat-Fenster, das nicht zum gewählten Kontakt gehört, ein neues erstellen?
    Dann solltest du die Objekte in einer separaten Liste sammeln und erst am Ende hinzufügen. Wenn du das gar nicht beabsichtigst, würde ich den Code nochmal bearbeiten...