Die Community zu .NET und Classic VB.
Menü

Tipp-Upload: VB.NET 0005: Textausrichtung (und mehr) mit der Stringformat-Klasse

 von 

Hinweis zum Tippvorschlag  

Dieser Vorschlag wurde noch nicht auf Sinn und Inhalt überprüft und die Zip-Datei wurde noch nicht auf schädlichen Inhalt hin untersucht.
Bitte haben Sie ein wenig Geduld, bis die Freigabe erfolgt.

Über den Tipp  

Dieser Tippvorschlag ist noch unbewertet.

Der Vorschlag ist in den folgenden Kategorien zu finden:

  • Fenster
  • Grafik

Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
ownerdraw, Stringformat, Attribute, Textausrichtung, Formatierung

Der Vorschlag wurde erstellt am: 26.08.2007 22:43.
Die letzte Aktualisierung erfolgte am 01.11.2007 15:25.

Zurück zur Übersicht

Beschreibung  

Die Darstellung eines Strings durch Graphics.DrawString() kann auf vielfältige Weise modifiziert werden, wenn ein StringFormat-Objekt an DrawString() mit übergeben wird:
Rechtsbündig, zentriert, vertikal zentriert, untenbündig, vertikale Schriftrichtung, Wortumbruch, Darstellung im zu kleinen LayoutRectangle, weitere.

Mit diesem Mini ownerdrawn Control lassen sich die meisten Einstellungen testen, sodaß man sich mit den Eigenschaften der StringFormat-Klasse vertraut machen kann.
Außerdem werden ein paar Attribute gezeigt, die Darstellung und Verhalten eines Controls im Form-Designer bestimmen.

Anwendung: Zur Verwendung des Controls im Designer muß das Projekt erstmal erstellt werden. Dann kann man die Einstellungen an der Property "CaptionStringFormat" vornehmen, und sieht das Ergebnis direkt im Designer (ohne weitere Kompilierung).

Anregungen bitte hier posten:
http://foren.activevb.de/cgi-bin/foren/view.pl?forum=13&msg=1379&root=1379&page=1

Schwierigkeitsgrad

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

Download:

Download des Beispielprojektes [13,60 KB]

' Dieser Source stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!
'
' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird.
' In den Zip-Dateien ist er jedoch zu finden.

' -------- Anfang Projektgruppe TestStringFormat.sln  --------
' ------- Anfang Projektdatei TestStringFormat.vbproj  -------
' ----------- Anfang Datei frmTestStringFormat.vb  -----------
' IDE-Voreinstellungen:
' Option Strict On
' Option Explicit On

Public Class frmTestStringFormat

    ' Hier gibt's nichts

End Class

' ------------ Ende Datei frmTestStringFormat.vb  ------------
' ------------ Anfang Datei StringFormatTester.vb ------------
Imports System.Drawing
Imports System.ComponentModel

''' <summary>
''' Dieses Controls Beschriftung läßt sich durch Veränderung seiner
''' CaptionStringFormat-Property manipulieren
''' </summary>
Public Class StringFormatTester

    Inherits Control

    Private ReadOnly _CaptionStringFormat As StringFormat = New StringFormat
    Private _Brush As New SolidBrush(Color.Black)

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

        If Not MyBase.IsDisposed Then

            For Each D As IDisposable In New IDisposable() {_Brush, _CaptionStringFormat}
                D.Dispose()
            Next

        End If

        MyBase.Dispose(disposing)

    End Sub

    ' Einstellung: Im Designer den Knoten der Property "CaptionStringFormat" erweitern, und
    ' Einstellungen vornehmen
    ' Es kann das vertikale und horizontale Alignment bestimmt werden, ob der Text
    ' umgebrochen wird (FormatFlags), welche Zeichen gekürzt werden, wenn der Text zu lang
    ' ist (Trimming)
    ' Die Änderungen sind sofort sichtbar - kein Kompilieren erforderlich
    <TypeConverter(GetType(ExpandableObjectConverter))> <Browsable(True)> <Category( _
        "Darstellung")> <Description("Einige interessante Einstellmöglichkeiten der " & _
        "Schrift-Darstellung")> <DesignerSerializationVisibility( _
        DesignerSerializationVisibility.Content)> Public ReadOnly Property _
        CaptionStringFormat() As StringFormat

        Get

            If Me.DesignMode Then Invalidate()
            Return _CaptionStringFormat

        End Get

    End Property

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)

        MyBase.OnTextChanged(e)
        Invalidate()

    End Sub

    Protected Overrides Sub OnSizeChanged(ByVal e As System.EventArgs)

        MyBase.OnSizeChanged(e)
        MyBase.Invalidate() ' Neuzeichnung meiner Caption gewährleisten

    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

        MyBase.OnPaint(e)

        If MyBase.ForeColor <> _Brush.Color Then
            _Brush.Dispose()
            _Brush = New SolidBrush(MyBase.ForeColor)
        End If

        With Me.ClientRectangle

            Dim Rct As New Rectangle(.Location, .Size - New Size(1, 1))

            e.Graphics.DrawRectangle(Pens.Black, Rct)
            e.Graphics.DrawString(MyBase.Text, MyBase.Font, _Brush, Rct, _CaptionStringFormat)
        End With

    End Sub

End Class

' ------------- Ende Datei StringFormatTester.vb -------------
' -------- Ende Projektdatei TestStringFormat.vbproj  --------
' --------- Ende Projektgruppe TestStringFormat.sln  ---------

	

Diskussion  

Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits

Sinn? - Philipp Stephani 15.01.2009 22:41

Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.