Rubrik: Grafik und Font · Font & Text | VB-Versionen: VB2005, VB2008 | 24.06.10 |
Textlänge prüfen und mit Punkten modifizieren Eine Funktion, die einen Text automatisch mit "..." kürzt, damit dieser in einem Control angezeigt werden kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 10.636 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute möchten wir Ihnen eine kleine Funktion vorstellen, mit der sich der Text innerhalb eines Controls so kürzen lässt, dass dieser ggf. mit 3 abschließenden Punkten (...) angezeigt wird, wenn der Text nicht vollständig sichtbar im Control dargestellt werden kann.
''' <summary> ''' Modifiziert einen String mit "..." am Ende falls notwendig ''' </summary> ''' <param name="sender">Objekt (Control), das den gekürzten String anzeigen soll</param> ''' <param name="Text">Text, der ggf. gekürzt angezeigt werden soll</param> ''' <returns>Modifizierter Text</returns> Public Function CompactText(ByVal sender As Object, ByVal Text As String) As String Dim flags As System.Windows.Forms.TextFormatFlags ' Flags für die Ausgabe des Textes flags = TextFormatFlags.Left Or _ TextFormatFlags.WordEllipsis Or TextFormatFlags.EndEllipsis Or _ TextFormatFlags.ModifyString ' Graphics-Objekt erstellen Using gr As Graphics = System.Drawing.Graphics.FromHwnd(sender.Handle) With sender ' Text gekürzt zurückgeben (falls erforderlich) TextRenderer.DrawText(gr, Text, .Font, .ClientRectangle, .ForeColor, flags) Return Text End With End Using End Function
Aufrufbeispiel:
Benötigt wird ein Label-Control, eine TextBox und ein Button.
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Label1.AutoSize = False Label1.Width = 100 End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Textbox-Inhalt im Label anzeigen und ggf. kürzen Label1.Text = CompactText(Label1, TextBox1.Text) End Sub