RichTextBox automatische Size Anpassung an den Text

  • Allgemein

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von EiPott.

    RichTextBox automatische Size Anpassung an den Text

    Hallo,

    ich schreibe gerade eine NewsBox mit RichTextBoxen und möchte die Darstellung der Nachrichten so anpassen, dass der TextFormat sich auf die Breite einstellt und die Höhe dan so ausfällt, dass der gesammte Text zusehen ist und keine Scrollbaars entstehen. Ich weis nur nicht wie ich dies machen kann, denn die Width ist nicht fest und der Text ist auch von der Size, Zeilen, und Schriftart... immer unterschiedlich groß.

    Hat da jemand eine Idee, wie man es anstellen künnte?
    Ok, habe diese Funktion, mal schauen ob es funktioniert ^^.

    VB.NET-Quellcode

    1. Private Function _Get_Height(ByVal Text As String, ByVal Font As Font, ByVal Width As Integer) As Integer
    2. Dim abmessung As SizeF
    3. Dim g As Graphics = Me.CreateGraphics
    4. abmessung = g.MeasureString(Text, Font, Width)
    5. g.Dispose()
    6. Return abmessung.Height
    7. End Function

    #edit 2
    Jedenfalls funktioniert die Funktion wunderbar, muss jetzt nur noch die Fontanpassung gemacht werden.
    #edit
    Habe noch einProblem bei dieser Funktion.

    Der Font einer RichTextBox ist nicht durchgehend gleich, deshalb kann man nicht einen Font nehmen.


    Steuerelement Quellcode:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class NewsBox
    2. Public Property Items As New List(Of NewsBoxItem)
    3. Public Sub UpdateView()
    4. MainPannel.Controls.Clear()
    5. Dim i As Integer = 0
    6. For Each Item As NewsBoxItem In _Items
    7. With Item
    8. .Parent = MainPannel
    9. .Size = New Size(MainPannel.Width, _Get_Height(Item.Text, Item.Font, MainPannel.Width))
    10. .Location = New Point(0, i)
    11. i += Item.Height
    12. End With
    13. Next
    14. End Sub
    15. Private Function _Get_Height(ByVal Text As String, ByVal Font As Font, ByVal Width As Integer) As Integer
    16. Dim abmessung As New SizeF
    17. Dim g As Graphics = Me.CreateGraphics
    18. abmessung = g.MeasureString(Text, Font, Width)
    19. g.Dispose()
    20. Return abmessung.Height
    21. End Function
    22. End Class

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