Fehler beim setzen des Textes eines RichTextBox's

  • VB.NET

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

    Fehler beim setzen des Textes eines RichTextBox's

    Hallo Community :)

    ich versuche über ein Event Nachrichten Zeile für Zeile in einer Richtextbox anzugeben.
    Code:

    VB.NET-Quellcode

    1. Private Sub mc_chatMessageReceived(e As ChatReceivedEventArgs) Handles mc.chatMessageReceived
    2. RichTextBox1.AppendText(e.message + vbNewLine)
    3. End Sub


    Problem dabei ist, dass da ein Fehler kommt: (Anhang)

    Ich bedanke mich schonmal im Vorraus! :)
    mfg
    Bilder
    • f9c5f6e15e550dbe5abe2ee610790043.png

      12,63 kB, 546×311, 110 mal angesehen
    @Kenox Threadübergreifende Vorgang.
    Machst Du

    VB.NET-Quellcode

    1. Me.BeginInvoke(Sub() Me.RichTextBox1.AppendText(e.message & Environment.NewLine))
    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!
    @RodFromGermany
    Danke, jetzt funktionierts. Aber wie kann ich alles nach dem Doppelpunkt (":") entfernen?

    z.B statt:

    Chidoreyyy: nup
    NypaRex: 1
    MrsRave: 1
    SensiLP: 1
    NypaRex: 1
    g3niusMC: 1
    g3niusMC: 1
    Galactica2016: 1

    soll das so aussehen:
    Chidoreyyy
    NypaRex
    MrsRave
    SensiLP
    NypaRex
    g3niusMC
    g3niusMC
    Galactica2016

    Danke! :)
    @Kenox So was in der Art (muss noch verfeinert werden):

    VB.NET-Quellcode

    1. Dim txt = "Chidoreyyy: nup NypaRex: 1 MrsRave: 1 SensiLP: 1 NypaRex: 1 g3niusMC: 1 g3niusMC: 1 Galactica2016: 1"
    2. Dim parts() = txt.Split(New String() {": 1"}, System.StringSplitOptions.RemoveEmptyEntries)

    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!
    @RodFromGermany Okay, danke aufjedenfall! Allerdings wie ersetze ich das alles direkt in der Richtextbox?
    bisher gibt es nur parts(0-blabla). Aber manuell immer parts(0), parts(1) 2 etc. zu machen ist nicht die beste lösung.

    Kenox schrieb:

    Allerdings wie ersetze ich das alles direkt in der Richtextbox?
    Wie kommt denn der Text in die RichTextBox?
    Mach es doch unmittelbar bevor Du die RTB befüllst.
    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!
    @RodFromGermany Stimmt allerdings, aber bei

    VB.NET-Quellcode

    1. Me.BeginInvoke(Sub() Me.RichTextBox1.AppendText(e.message.Split(New String() {":"}, System.StringSplitOptions.RemoveEmptyEntries) & Environment.NewLine))


    kommt (Anhang)
    Bilder
    • d9bee7dc6cee49ecb0c5ccfe9ad7c193.png

      6,16 kB, 778×57, 122 mal angesehen
    @RodFromGermany Ein Array, aber ich weiß leider nicht wie ich das beim direkten Eintrag replacen kann. Wie gesagt, da kommt leider ein Error. :C :)
    @Kenox Dann überleg doch mal, wie man aus einem String-Array wieder einen String macht.
    Kleine Hilfe: String.Join(...).
    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!

    RodFromGermany schrieb:

    @Kenox Dann überleg doch mal, wie man aus einem String-Array wieder einen String macht.
    Kleine Hilfe: String.Join(...).


    Danke, @RodFromGermany. Jetzt habe ich jedoch wieder das Problem, dass die Namen zum einen nicht nach jeder Zeile angezeigt werden & zum anderen nicht alles nach dem Doppelpunkt entfernt wird. :/
    Aktueller Code:

    VB.NET-Quellcode

    1. ​Me.BeginInvoke(Sub() Me.RichTextBox1.AppendText(String.Join(Environment.NewLine, e.message.Split(New String() {":"}, System.StringSplitOptions.RemoveEmptyEntries))))
    @Kenox Pack den ganzen Code in eine separate Sub, die Du mit BeginInvoke aufrufst, dort kanst Du einen Haltepunkt reinsetzen und debuggen:

    VB.NET-Quellcode

    1. Me.BeginInvoke(Sub() MySub(e.message))

    VB.NET-Quellcode

    1. Private Sub MySub(txt As String)
    2. ' hier den String verarbeiten
    3. End Sub
    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!
    @RodFromGermany Okay, ist gemacht. Aber ich habe das mit den Haltepunkten nicht so ganz verstanden.
    Ich habe jetzt einen Haltepunkt auf ​Me.BeginInvoke(Sub() MySub(e.message)) gesetzt, debuggt etc. Aber ich kann
    im Aufruffenster nichts damit anfangen. :c
    @Kenox Das ist ja der Nebenthread.
    Den Haltepunkt musst Du in MySub() rein setzen, das ist der Main-Thread.
    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!