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.625 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (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. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |