textbox mit verschiedenen Farben

  • Allgemein

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ichbines.

    textbox mit verschiedenen Farben

    hallo,
    ich habe eine Textbox, in die in gewissen Zeitabständen, neu texte dazu geladen werden.
    Wie kann ich es machen, dass der neu eingetragene Text z.b die farbe blau hat, während der alte text grün ist?

    MfG
    Hallo, ichbines.

    Ob und wie das mit einem gewöhnlichen Textfeld machbar wäre, weiß ich nicht - mit einem RTF-Textfeldes (Rich Text Format) geht das jedoch sehr einfach. Du musst dafür über Projekt/Komponenten einen Haken bei "Microsoft Rich Text Control 6.0" machen (oder alternativ per "Durchsuchen" nach der Datei "Richtx32.ocx" suchen).

    Anschließend kannst du z.B. über die Eigenschaft "SelStart" einen Text innerhalb des RTF-Dokuments selektieren und z.B. jedem einzelnen Buchstaben per "SelColor" eine andere Farbe geben. Allgemein gilt die RTF-Textbox als wesentlich umgänglicher, da es viele Funktionen bereits beeinhaltet, die bei einem gewöhnlichen Textfeld fehlen (z.B. das Finden von Strings, das automatische Öffnen und Speichern von Dateien, Handling von Einrückungen etc.).

    Der Nachteil liegt natürlich auf der Hand: jeder PC, auf dem das Programm laufen soll, braucht ebenfalls die Datei Richtx32.ocx.

    mfG,

    Malcolm

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

    Hallo zusammen,
    Original von Malcolm
    Der Nachteil liegt natürlich auf der Hand: jeder PC, auf dem das Programm laufen soll, braucht ebenfalls die Datei Richtx32.ocx.

    ... das ist der Vorteil! Jeder Programmierer kann ein Setup-Programm schreiben und damit dem Anwender die Dateien liefern, die er benötigt. Es soll sogar Setupprogramme geben, welche die mitgelieferten Dateien gleich im System registrieren ;)

    Gruß Markus
    Ja schon.

    Trotzdem ist es einen Deut aufwändiger als einfach eine Textbox zu benutzen :). Natürlich wird dieser Nachteil von den vielen Vorteilen, die ein RTF-Feld besitzt, mehr als aufgewogen ...

    Aber anscheinend hat der TE ohnehin keinen Bedarf mehr an einer Beantwortung.

    mfG,

    Malcolm

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

    ich habe es jetzt mit einem RTF-Textfeld probiert:

    (alles in einen timer eingebaut)

    text1.text = 123456 + vbnewline + text1.text
    text1.select(0 , 6)
    text1.selectioncolor = color.red


    das problem ist nun: bei der ersten "aktualisierung" wird nur "123456" rot,
    sobald aber nochmal text dazu kommt ist alles rot wieso?

    MfG
    Hallo ichbines,

    benutzerdefinierte Funktionen wie select solltest du erklären, wir können ja nicht hellsehen....

    Probiere mal dies (keine Ahnung, was deine Problematik auslöst):

    Quellcode

    1. Dim strTmp As String
    2. With RichTextBox1
    3. strTmp = Time
    4. .Text = strTmp & vbNewLine & .Text
    5. .SelLength = Len(.Text)
    6. .SelColor = vbBlack
    7. .SelLength = Len(strTmp)
    8. .SelColor = vbRed
    9. End With


    Gruß Markus
    Original von ichbines
    also:
    hatte nen fehler im posting zuvor,

    text1.text = "123456" + vbnewline + "bla bla bla" + vbnewline + text1.text
    text1.select(0 , 6)
    text1.selectioncolor = color.red

    der text soll dann so aussehen:
    123456
    bla bla bla
    123456
    bla bla bla
    123456
    bla bla bla


    select ist ne feste anweisung bei vb.net (wusste nicht, dass es die bei vb noch nicht gab) und legt fest von wo bis wo der text makiert wird.
    select(0,6): 0 = startzeichen, 6 gleich letztes zeichen
    selectioncolor: farbe des markierten textes

    MfG
    Hi!

    1. Hat sich die Setup-Frage geklärt, da die RTB fester Bestandteil des Framework 1.x und 2.0 ist :)

    2. Soll der neue Text wirklich oben dran geschrieben werden?

    3. Versuch mal

    VB.NET-Quellcode

    1. text1.text = "123456" + vbnewline + "bla bla bla" + vbnewline + text1.text
    2. text1.select(0, 6)
    3. text1.selectioncolor = color.red
    4. text1.select(0, 0)


    Wenn das nüx hilft, schau ichs mir mal genauer an :)
    @alchimist:
    Verwende ich deinen Code, siehts so aus:
    123456
    bla bla bla
    123456
    bla bla bla
    123456
    bla bla bla

    @Mad Andy
    meinetwegen kann der text auch unten dran, hauptsache es wird 2-farbig ^^

    bei deinem code wird auch alles rot.

    ...bin ratlos

    Mfg
    Hallo,
    Original von ichbines
    @alchimist:
    Verwende ich deinen Code, siehts so aus...

    sorry, hatte verstanden, dass immer das neuste rot sein soll...

    Ich weiß auch keine elegante Lösung, außer dieses: Merke dir, an welchen Stellen Text andersfarbig sein soll und wende dies nach dem Ändern des Inhalts an.

    Gruß Markus
    hi!

    Das Problem ist, dass bei

    VB.NET-Quellcode

    1. RTB.Select(0, xyz)
    2. RTB.SelectionColor = Color.XYZ

    aus irgendeinem Grund die "Normal"-Farbe geändert wird Oo
    Und komischerweise erst beim 2ten mal, wenn man das macht ...
    Typisch Microsoft eben ^^

    Abhilfe schafft, wenn man den neuen Text unten dran hängt :)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Inherits System.Windows.Forms.Form
    3. [Windows Form Designer generated code]
    4. Dim oldLen As Long
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. RTB1.AppendText("123456" & vbNewLine & "Text" & vbNewLine)
    7. End Sub
    8. Private Sub RTB1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RTB1.TextChanged
    9. RTB1.Select(oldLen + 0, 6)
    10. RTB1.SelectionColor = Color.Red
    11. oldLen = RTB1.Text.Length
    12. End Sub
    13. End Class


    Ich hab aber leider keine Ahnung, wie man automatisch scrollt, was natürlich ein großer Nachteil an der Sache ist ....

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

    ...so, ich habe mich mittlerweile damit abgefunden, dass ich verschiedene Farben nur schaffe, wenn ich den Text unten anfüge. (hab soweit alles umprogrammiert)

    ich weiß nur beim besten willen nicht wie ich in der richtextbox automatisch nach unten scrollen lasse.

    irgendjemand eine Idee ? ;)

    MfG