Online Chat mit ListView

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Ale.

    Online Chat mit ListView

    Hallo,

    Ich bin schon länger an einem großen Projekt dran und habe derzeit in meinem Projekt einen Chat, der über Webrequests und PHP die Nachricht auf den Server hinterlegt und über eine weitere Webrequests die auf dem Server hinterlegte Chat.txt ausließt und in einer TextBox ausgibt.

    Da mir das auf Dauer zu unübersichtlich ist, wollte ich das ganze über eine ListView versuchen. Ich habe bereits eine PHP Datei fertiggestellt, die folgendermaßen die Daten in eine .txt ausgibt:
    Datum | Name | Nachricht

    Leider weiß ich momentan nicht, wie ich die Daten aus der Chat.txt in die ListView fülle.
    Das ich das mit "|" splitten muss, ist mir schon klar. Würde mich freuen, wenn mir jemand schnell helfen könnte.

    MfG
    Ale :)
    Hi
    geschickter löst man sowas bspw. über Tcp. Schau's dir mal an, ist nicht so schwer.

    Statt einem ListView wäre wahrscheinlich ein DataGridView die bessere Wahl - oder direkt eine RichTextBox.
    Beim ListView würdest du entsprechend den gesplitteten text über die SubItems hinzufügen (z.B. ListView.Items.Add(New ListViewItem(line.Split("|"c))) sollte funktionieren.
    Beim DataGridView könntest du eine Klasse anlegen, die die Eigenschaften Date, Name, Message besitzt und die Spalten des DataGridViews an die Eingabe binden.
    Bei der RichTextBox wäre es dann an dir, die Eingabe entsprechend zu formatieren. Die ist leider etwas unpraktisch zu verwalten, aber mit SelectionStart, SelectionLength, SelectedFont, usw. kann man schon einiges erreichen.

    Gruß
    ~blaze~
    Okay danke für die schnelle Hilfe, habe das erst jetzt gelesen. :)

    Per TCP kann ich den Chat nicht laufen lassen, da ich einen Webserver (.de Domain) verwende.
    Könnt ihr mir das genauer mit der DataGridView erklären? Habe damit noch nie gearbeitet. Ich habe jetzt die DataGridView erstellt und alles schön angepasst. Ich habe den Chatverlauf nun per WebRequest abfragen lassen, nur weiß ich nicht, wie ich Datum | Name | Nachricht in die DataGridView einfügen kann.
    Hy, du fügst dem DGV eine neue Row Hinzu

    Ein Beispiel
    Du erstellst dir eine Klasse ChatInfo in der Du die Werte Speicherst

    VB.NET-Quellcode

    1. public class chatInfo
    2. public Datum as Date
    3. public Zeit as Date
    4. public Sender as String
    5. public Msg as String
    6. End Class


    Dann erstellst du eine List of deiner Klasse, und aus dieser list of ChatInfo schreibst die werte in deine DGV

    VB.NET-Quellcode

    1. Public Function chatInfoHinzufügen() as list(of ChatInfo)
    2. Dim list as new List(of ChatInfo)
    3. for i = 0 to 10
    4. Dim info as new ChatInfo
    5. info.Datum = Date.Now
    6. info.Zeit = Date.Now
    7. info.Sender = "Sender " & i
    8. info.Msg = "Nachricht #" & i
    9. next
    10. return list
    11. End Function
    12. Public Sub ausgeben()
    13. Dim z as Integer = 0
    14. For each value as ChatInfo in chatInfoHinzufügen()
    15. Me.DGV1.Rows.Add()
    16. With Me.DGV.Rows(z)
    17. .Cells(0).value = value.Datum.Today
    18. .Cells(1).value = value.Zeit.TimeOfDay
    19. .Cells(2).value = value.Sender
    20. .Cells(3).value = value.Msg
    21. End With
    22. z +=1
    23. Next
    24. End Sub
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Andy16823“ ()

    Von Andys Vorgehensweise würde ich dringend abraten!!!!

    Speicher die Daten in nem Dataset und binde es an das DGV... Dafür isses gedacht. Gewöhn dir direkt an GUI und Daten zu trennen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Vielen Dank für eure Hilfe. Ich werde mir das noch einmal anschauen und melde mich später noch einmal.
    Natürlich könnt Ihr hier weitere Tipps geben, denn ich habe noch keinerlei Erfahrungen mit DataGridViews gemacht und somit auch nicht mit seinen Funktionen. :)
    ich schaffs nicht :/

    Ich habs geschafft, das die Daten von einer DataTable in die DataGridView kommen.


    VB.NET-Quellcode

    1. Dim datat As New DataTable
    2. datat.Columns.Add("Datum", GetType(String))
    3. datat.Columns.Add("Name", GetType(String))
    4. datat.Columns.Add("Nachricht", GetType(String))
    5. datat.Rows.Add(DateTime.Now, "David", "hi")
    6. DataGridView1.DataSource = datat


    Die Daten habe ich erstmal manuell eingefügt (also nicht über Splitt). Das Problem ist, das die Columns aus der DataTable hinter die Columns der DataGridView angehängt werden. Ich würde aber viel mehr Die Daten aus der DataTable in die Columns der DataGridView eingefügt werden, da diese schon auf Größe, etc. eingestellt sind.
    Außerdem habe ich das Problem, das ich Die Einstellung "AutoSizeRowMode" nicht auf Fill einstellen kann mit dem Fehler:
    Der AutoSize-Modus der Spalten kann nicht auf "Fill" festgelegt werden, da mindestens eine sichtbare Spalte diesen Modus erben würde und fixiert ist. MfG
    Ale

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Ale“ ()