Dieser Tipp zeigt Ihnen wie Sie einen sehr großen Text einer TextBox mit der Eigenschaft "MultiLine = True" ausdrucken können. Benötigte Komponenten
Fügen Sie folgenden Code in den Codeteil der Form ein: Public Class Form1 Inherits System.Windows.Forms.Form ' Verweis auf unsere TextDrucken-Klasse Dim TextDrucken As New TextBoxDrucken Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Ausdruck starten PrintDocument1.Print() End Sub Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage ' Druckauftrag an die TextDrucken-Klasse weiterleiten TextDrucken.Print(PrintDocument1, TextBox1, Brushes.Red, "Monotype Corsiva", 12, FontStyle.Italic, e) End Sub End Class Fügen Sie dem Projekt ein neues Klassenmodul hinzu und kopieren folgenden Code in den Codeteil der Klasse: Imports System.Drawing Imports System.Drawing.Printing Imports System.Windows.Forms Public Class TextBoxDrucken Dim PosInStr As Integer Dim IsPrinting As Boolean Dim Coll As New List(Of String) Public Sub Print(ByVal Document As PrintDocument, ByVal TextBox As TextBox, ByVal ForeColor As Brush, _ ByVal Font As String, ByVal FontSize As Integer, ByVal FontStyle As FontStyle, ByVal e As PrintPageEventArgs) Dim left As Decimal = Document.DefaultPageSettings.Margins.Left Dim right As Decimal = Document.DefaultPageSettings.Margins.Right Dim top As Decimal = Document.DefaultPageSettings.Margins.Top Dim bottom As Decimal = Document.DefaultPageSettings.Margins.Bottom Dim pagewidth As Integer = Document.DefaultPageSettings.Bounds.Width - right Dim pageheight As Integer = Document.DefaultPageSettings.Bounds.Height - bottom Dim rect As New Rectangle(left, top, 0.0, 0.0) Dim f As New Font(TextBox.Font.ToString, TextBox.Font.Size, TextBox.Font.Style) Dim brush As New SolidBrush(TextBox.ForeColor) Dim StrIn As String Dim StrInSize As SizeF If IsPrinting = False Then StrIn = TextBox.Text For i As Integer = 0 To Len(StrIn) If i < Len(StrIn) Then Coll.Add(StrIn.Substring(i, 1)) ElseIf i = Len(StrIn) Then Coll.Add(StrIn.Substring(i)) End If Next IsPrinting = True End If If IsPrinting = True Then For i As Integer = PosInStr To Coll.Count - 1 StrIn = Coll.Item(i).ToString StrInSize = e.Graphics.MeasureString(StrIn, f, 8, StringFormat.GenericTypographic) rect.Width = StrInSize.Width e.Graphics.DrawString(StrIn, f, brush, rect.X, rect.Y) If rect.X + StrInSize.Width < pagewidth Then rect.X += StrInSize.Width ElseIf rect.X + StrInSize.Width >= pagewidth Then rect.X = left rect.Y += StrInSize.Height End If If rect.Y + StrInSize.Height > pageheight Then PosInStr = i + 1 e.HasMorePages = True Exit For ElseIf rect.Y + StrInSize.Height < pageheight Then e.HasMorePages = False If i = Coll.Count - 1 Then IsPrinting = False Coll.Clear() PosInStr = 0 End If End If Next End If End Sub End Class Dieser Tipp wurde bereits 25.552 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats ![]() Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |