Einzelnes Wort im Label färben

  • VB.NET

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

    Einzelnes Wort im Label färben

    Guten Abend,
    ich wollte Fragen wie man ein Wort was sich ein Label befindet färben kann. Ich habe nur ein Code gefunden:

    VB.NET-Quellcode

    1. With RichTextBox1
    2. .SelColor = vbRed
    3. .SelText = "rot "
    4. .SelColor = vbBlue
    5. .SelText = "blau"
    6. End With

    Aber das funktioniert nicht durch ein Label.

    Vielen Dank
    mit freundlichen Grüßen
    GirlOnFire
    Dafür ist ein Label nicht geeignet. Wie schon in deinem Code gezeigt, ne RichTextBox kann das, und du kannst eine solche vielleicht dazu bringen, so auszusehen wie ein Label. Wenn nicht, dann kannst du auch die einzelnen Teilstrings mit GDI zeichnen.
    Schon mit der RichTextBox probiert?
    Ansonsten halt erst den Teil vor dem farbigen Wort mit DrawString in schwarz zeichnen, den denn mit MeasureString abmessen, damit du weißt, wo der nächste Teil hin muss, dann diesen in der gewünschten Farbe an der berechneten Position wieder mit DrawString zeichnen, diesen Teil ebenfalls mit MeasureString abmessen und dann halt immer so weiter.
    Erstell dir eine Klasse, lass sie von Control erben und füge das PaintEvent hinzu. Natürlich brauchst du eine Eigenschaft die den Text speichert. Diesen Text splittest du zwischen den Leerzeichen, dann gehst du jedes Wort durch, zeichnest es mit e.Graphics.DrawString, ist ein bestimmtes Wort gleich dem Wort welches du färben möchtest, übergebe e.Graphics.DrawString einfach eine andere Farbe.
    @GirlOnFire:: Hab mal fix eine SingleLine-Variante für die Form gemacht:
    Color-Text

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    2. Dim g = e.Graphics
    3. ' der zu verwendende Font
    4. Dim ft = New Font("Arial", 10)
    5. ' der auszugebende Text
    6. Dim text = "aa bb cc dd ee ff"
    7. ' die der Reihe nach zu verwendenden Farben
    8. Dim col() = {Color.Red, Color.Green, Color.Blue}
    9. Dim parts() = text.Split(" "c)
    10. Dim x = 30.0F ' Start Text-Position
    11. Dim i = 0 ' Start-Color-Index
    12. For Each part In parts
    13. Dim txt = part & " "
    14. Dim sz = g.MeasureString(txt, ft)
    15. g.DrawString(txt, ft, New SolidBrush(col(i)), x, 30)
    16. x += sz.Width ' nächste Text-Position
    17. i = (i + 1) Mod col.Length ' nächster Color-Index
    18. Next
    19. End Sub
    Bilder
    • ColorText.jpg

      4,96 kB, 248×125, 670 mal angesehen
    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!