Mega Code Archive

 
Categories / VB.Net Tutorial / GUI
 

Print view text in RichTextBox

Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class PrintPreview    public Shared Sub Main         Application.Run(New Form1)    End Sub End class Public Class Form1     Inherits System.Windows.Forms.Form     Public Sub New()         MyBase.New()         InitializeComponent()     End Sub     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)         If disposing Then             If Not (components Is Nothing) Then                 components.Dispose()             End If         End If         MyBase.Dispose(disposing)     End Sub     Private components As System.ComponentModel.IContainer     Friend WithEvents PrintDocument1 As System.Drawing.Printing.PrintDocument     Friend WithEvents PrintPreviewDialog1 As System.Windows.Forms.PrintPreviewDialog     Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog     Friend WithEvents SaveFileDialog1 As System.Windows.Forms.SaveFileDialog     Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu     Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem5 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem6 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem7 As System.Windows.Forms.MenuItem     Friend WithEvents MenuItem8 As System.Windows.Forms.MenuItem     Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()         Me.PrintDocument1 = New System.Drawing.Printing.PrintDocument         Me.PrintPreviewDialog1 = New System.Windows.Forms.PrintPreviewDialog         Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog         Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog         Me.MainMenu1 = New System.Windows.Forms.MainMenu         Me.MenuItem1 = New System.Windows.Forms.MenuItem         Me.MenuItem2 = New System.Windows.Forms.MenuItem         Me.MenuItem3 = New System.Windows.Forms.MenuItem         Me.MenuItem4 = New System.Windows.Forms.MenuItem         Me.MenuItem5 = New System.Windows.Forms.MenuItem         Me.MenuItem6 = New System.Windows.Forms.MenuItem         Me.MenuItem7 = New System.Windows.Forms.MenuItem         Me.MenuItem8 = New System.Windows.Forms.MenuItem         Me.RichTextBox1 = New System.Windows.Forms.RichTextBox         Me.SuspendLayout()         '         Me.PrintPreviewDialog1.AutoScrollMargin = New System.Drawing.Size(0, 0)         Me.PrintPreviewDialog1.AutoScrollMinSize = New System.Drawing.Size(0, 0)         Me.PrintPreviewDialog1.ClientSize = New System.Drawing.Size(400, 300)         Me.PrintPreviewDialog1.Document = Me.PrintDocument1         Me.PrintPreviewDialog1.Enabled = True         Me.PrintPreviewDialog1.Location = New System.Drawing.Point(147, 19)         Me.PrintPreviewDialog1.MinimumSize = New System.Drawing.Size(375, 250)         Me.PrintPreviewDialog1.Name = "PrintPreviewDialog1"         Me.PrintPreviewDialog1.TransparencyKey = System.Drawing.Color.Empty         Me.PrintPreviewDialog1.Visible = False         '         'MainMenu1         '         Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})         '         'MenuItem1         '         Me.MenuItem1.Index = 0         Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem3, Me.MenuItem4, Me.MenuItem5, Me.MenuItem6, Me.MenuItem7, Me.MenuItem8})         Me.MenuItem1.Text = "File"         '         'MenuItem2         '         Me.MenuItem2.Index = 0         Me.MenuItem2.Text = "Open"         '         'MenuItem3         '         Me.MenuItem3.Index = 1         Me.MenuItem3.Text = "Save"         '         'MenuItem4         '         Me.MenuItem4.Index = 2         Me.MenuItem4.Text = "-"         '         'MenuItem5         '         Me.MenuItem5.Index = 3         Me.MenuItem5.Text = "Preview"         '         'MenuItem6         '         Me.MenuItem6.Index = 4         Me.MenuItem6.Text = "Print"         '         'MenuItem7         '         Me.MenuItem7.Index = 5         Me.MenuItem7.Text = "-"         '         'MenuItem8         '         Me.MenuItem8.Index = 6         Me.MenuItem8.Text = "Exit"         '         'RichTextBox1         '         Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill         Me.RichTextBox1.Location = New System.Drawing.Point(0, 0)         Me.RichTextBox1.Name = "RichTextBox1"         Me.RichTextBox1.Size = New System.Drawing.Size(292, 266)         Me.RichTextBox1.TabIndex = 0         Me.RichTextBox1.Text = ""         '         'Form1         '         Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)         Me.ClientSize = New System.Drawing.Size(292, 266)         Me.Controls.Add(Me.RichTextBox1)         Me.Menu = Me.MainMenu1         Me.ResumeLayout(False)     End Sub     Dim streamToPrint As System.IO.StringReader     Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click         RichTextBox1.Text = "asdfasdf"     End Sub     Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click         SaveFileDialog1.ShowDialog()         RichTextBox1.SaveFile(SaveFileDialog1.FileName)     End Sub     Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click         streamToPrint = New System.IO.StringReader(RichTextBox1.Text)         PrintPreviewDialog1.ShowDialog()     End Sub     Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem6.Click         streamToPrint = New System.IO.StringReader(RichTextBox1.Text)         PrintDocument1.Print()     End Sub     Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage         Dim linePerPage As Single = 0         Dim verticalPostion As Single = 0         Dim count As Integer = 0         Dim leftMargin As Single = e.MarginBounds.Left         Dim topMargin As Single = e.MarginBounds.Top         Dim strLine As String         linePerPage = e.MarginBounds.Height / RichTextBox1.Font.GetHeight(e.Graphics)         strLine = streamToPrint.ReadLine         While ((count < linePerPage) And Not (strLine Is Nothing))             verticalPostion = topMargin + (count * RichTextBox1.Font.GetHeight(e.Graphics))             e.Graphics.DrawString(strLine, RichTextBox1.Font, Brushes.Black, leftMargin, verticalPostion, New StringFormat)             count = count + 1             If (count < linePerPage) Then                 strLine = streamToPrint.ReadLine             End If         End While         If (strLine <> Nothing) Then             e.HasMorePages = True         Else             e.HasMorePages = False         End If     End Sub     Private Sub MenuItem8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem8.Click         End     End Sub End Class