Design your own PrintPreviewDialog

xiaoxiao2021-03-06  40

A PrintPreview program designed, the biggest feature is to integrate the page settings, print settings, and font settings into a window. There are still many problems, I hope the expert is one or two. Source code: imports system.drawing.printingimports system.iopublic class previewControl inherits system.windows.forms.form

#Region "Windows Form Designer Generated Code"

Public Sub new () mybase.new ()

'This call is required for the Windows Form Designer. InitializeComponent ()

'Add any initialization after INITIALIZECOMPONENT ()

End Sub

'Form rewriting Dispose to clean up the list of components. Protected overloads overrides sub dispose (byval disposing as boolean) ing disponation kiln (Components Is Nothing) Then components.dispose () end if endiffs) End sub

'Windows Form Designer Supply Private Components as System.comPonentModel.icontainer

'Note: The following procedure is necessary to use the Windows Form Designer to modify this process using the Windows Form Designer. 'Don't modify it using the code editor.

Friend WithEvents PrintPreviewControl1 As System.Windows.Forms.PrintPreviewControl Friend WithEvents printsetup As dbcbutton.dbcbutton Private WithEvents pagesetup As dbcbutton.dbcbutton Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents openfile As dbcbutton.dbcbutton Friend WithEvents setfont As dbcbutton.dbcbutton Friend WithEvents printthis As dbcbutton.dbcbutton Friend WithEvents pagecount As System.Windows.Forms.NumericUpDown Friend WithEvents pageroom As System.Windows.Forms. ComboBox Private Sub InitializeComponent () Me.PrintPreviewControl1 = New System.Windows.Forms.PrintPreviewControl Me.printsetup = New dbcbutton.dbcbutton Me.pagesetup = New dbcbutton.dbcbutton Me.pagecount = New System. Windows.Forms.NumericUpdown me.pageroom = New Syste m.Windows.Forms.ComboBox Me.Label1 = New System.Windows.Forms.Label Me.Label2 = New System.Windows.Forms.Label Me.Label3 = New System.Windows.Forms.Label Me.openfile = New dbcbutton. dbcbutton Me.setfont = New dbcbutton.dbcbutton Me.printthis = New dbcbutton.dbcbutton CType (Me.pagecount, System.ComponentModel.ISupportInitialize) .BeginInit () Me.SuspendLayout () '' PrintPreviewControl1 'Me.PrintPreviewControl1.Anchor =

CType ((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PrintPreviewControl1.AutoZoom = False Me.PrintPreviewControl1.Location = New System.Drawing.Point (8, 40) Me.PrintPreviewControl1.Name = "PrintPreviewControl1" Me.PrintPreviewControl1.Size = New System. Drawing.Size (696, 280) Me.PrintPreviewControl1.TabIndex = 0 Me.PrintPreviewControl1.Zoom = 0.3 '' printsetup 'Me.printsetup.BackColor = System.Drawing.SystemColors.Control Me.printsetup.ButtonStyle = dbcbutton.dbcbutton.Style .RectStyle Me.printsetup.GrayColor = System.Drawing.Color.BurlyWood Me.printsetup.LightColor = System.Drawing.Color.White Me.printsetup.Location = New System.Drawing.Point (168, 8) Me.printsetup.mytext = "Print Settings "Me.printsetup.Name =" printsetup "Me.printsetup.Size = New System.Drawing.Size (72, 24) Me.printsetup.TabIndex = 1 '' pagesetup 'Me.pagesetup.BackColor = System.Drawing.SystemColors. Control Me.pagesetup.ButtonStyle = dbcbutton.dbcbutton.Style.RectStyle Me.pagesetup.GrayColor = System.Drawing.Color.BurlyWood Me.pagesetup.LightColor = System.Drawing.Color.White Me.pagesetup.Location = New System.Drawing .Point (256, 8) me.pagesetup.mytext = "page setting" me.pagesetup.name = "Pagesetup"

Me.pagesetup.size = new system.drawing.size (72, 24) me.pagesetup.tabindex = 2 '' pagecount 'me.pagecount.page = new system.drawing.point (624, 11) me.pagecount.minimum = New decimal (new integer () {1, 0, 0, 0}) me.pagecount.name = "pagecount" me.pagecount.size = new system.drawing.size (40, 21) me.pagecount.tabindex = 3 me.pagecount.value = new decimal (new integer () {1, 0, 0, 0}) '' PageRoom 'me.pageroom.Item.Addrange (New Object () {"25%", "50%" , "75%", "100%"}) me.pageroom.location = new system.drawing.point (512, 12) me.pageroom.name = "PageRoom" me.pageroom.size = new system.drawing.size (56, 20) me.pageroom.tabindex = 4 me.pageroom.text = "Zoom" '' Label1 'me.label1.location = new system.drawing.point (456, 16) me.label1.name = "label1 "Me.label1.size = new system.drawing.size (48, 16) me.label1.tabindex = 5 me.label1.text = "Zoom:" me.label1.textalign = system.drawing.contentalignment.middleCenter '' Label2 'me.label2.location = new system.drawing.point (584, 16) Me.Label2. Name = "label2" me.label2.size = new system.drawing.size (32, 16) me.label2.tabindex = 6 me.label2.text = "me.label2.textalign = system.drawing.contentalignment. MiddleCenter '' 'Label3' me.label3.location =

New system.drawing.point (672, 16) me.label3.name = "label3" me.label3.size = new system.drawing.size (32, 16) me.label3.tabINDEX = 7 me.label3.text = "page" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter '' openfile 'Me.openfile.BackColor = System.Drawing.SystemColors.Control Me.openfile.ButtonStyle = dbcbutton.dbcbutton.Style.RectStyle Me.openfile. GrayColor = system.drawing.color.burlywood me.openfile.lightcolor = system.drawing.color.white me.openfile.location = new system.drawing.point (8, 8) me.openfile.mytext = "Select File" ME .openfile.name = "openfile" me.openfile.size = new system.drawing.size (72, 24) me.openfile.tabindex = 8 '' setfont 'me.setfont.backcolor = system.drawing.systemcolors.Control ME .Setfont.ButtonStyle = dbcbutton.dbcButton.style.RectStyle Me.SetFont.grayColor = system.drawing.color.burlywood Me.SetFont.lightColor = system.drawing.color.white me.dfont.location = new system.drawing.point (88, 8) me.setfont.mytext = "Set font" me.setfont.name = "setFont" ME .setfont.Size = New System.Drawing.Size (72, 24) Me.setfont.TabIndex = 9 '' printthis' Me.printthis.BackColor = System.Drawing.SystemColors.Control Me.printthis.ButtonStyle = dbcbutton.dbcbutton. Style.RectStyle Me.PrintThis.grayColor = system.drawing.color.burlywood me.printthis.lightcolor =

System.drawing.color.white me.printthis.location = new system.drawing.point (344, 8) me.printthis.mytext = "Start printing" me.printthis.name = "printthis" me.printthis.size = new System.Drawing.Size (72, 24) Me.printthis.TabIndex = 10 '' previewcontrol 'Me.AutoScaleBaseSize = New System.Drawing.Size (6, 14) Me.ClientSize = New System.Drawing.Size (712, 325 Me.controls.add (me.printthis) me.controls.add (me. setfont) me.controls.add (me.label3) me.controls.add (Me.Label2) ) Me.Controls.add (me.label1) me.controls.add (me.pageRoom) me.controls.add (me.pagesetup) me.controls.add (me.printsetup ) Me.Controls.Add (Me.PrintPreviewControl1) Me.Name = "previewcontrol" Me.Text = "previewcontrol" CType (Me.pagecount, System.ComponentModel.ISupportInitialize) .EndInit () Me.ResumeLayout (False) End Sub

#End Region Private printstream As StreamReader Private printfont As Font Dim newprintdocument As New PrintDocument Private totalpage As Single = 0 'is stored Pages Private Sub previewcontrol_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler NewprintDocument.printpage, addressof newprintdocument_printpage end sub

'Printpage page function Private Sub newprintdocument_printpage (ByVal sender As Object, ByVal ev As PrintPageEventArgs) Try totalpage = 1 If printstream.ReadLine Is Nothing Then MsgBox ( "No Content") Exit Sub End IfIf printfont Is Nothing Then printfont = New Font ("Song Body", 12) End IF

DIM PageLines As Single 'Store DIM LINEHEIGHT AS SINGLE = PrintFont.getHeight (Ev.graphics)' Storage line High DIM XPOS AS SINGLE = 0 'Store X coordinate DIM YPOS AS SINGLE = 0 'Store each row of Y coordinate DIM lineCount as single = 0' stores the number of rows that have been printed DIM STRFORMAT AS New StringFormat Dim LEFT AS SINGLE = ev.Marginbounds.LEFT DIM TOP SINGLE = ev.Marginbounds.top strformat.formatflags = StringFormatFlags.LineLimit Dim printbrush As Brush printbrush = New SolidBrush (Color.Black) pagelines = ev.MarginBounds.Height / lineheight Dim strline As String = Nothing Do While linecount

End If Catch ex As Printing.InvalidPrinterException MsgBox (ex.Message, MsgBoxStyle.OKOnly, "misprint") MsgBox (ex.Source) Catch ex1 As Exception MsgBox (ex1.Message) MsgBox (ex1.Source) End Try pagecount.Maximum = totalpage pagecount.Minimum = 1 End Sub 'open a file, read the file stream begins to fill the printed page Private Sub openfile_onclick (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles openfile.Click totalpage = 0 If Not ( printstream Is Nothing) Then printstream.Close () End If Dim filedialog As New OpenFileDialog If filedialog.ShowDialog = DialogResult.OK Then printstream = New StreamReader (filedialog.FileName) PrintPreviewControl1.Document = newprintdocument PrintPreviewControl1.Zoom = 1 End If End Sub

'Font Settings dialog Private Sub setfont_onclick (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles setfont.Click Dim setfontdialog As New FontDialog If setfontdialog.ShowDialog = DialogResult.OK Then totalpage = 0 printstream.BaseStream.Seek ( 0, seekorigin.begin) PrintFont = setFontDialog.Font PrintPreviewControl1.invalidatePreview () me.refresh () end if End Sub

"Print Setup dialog box Private Sub printsetup_onclick (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles printsetup.Click Dim printsetup As New PrintDialog printsetup.Document = newprintdocument If printsetup.ShowDialog = DialogResult.OK Then totalpage = 0 printstream .BaseStream.Seek (0, SeekOrigin.Begin) PrintPreviewControl1.InvalidatePreview () Me.Refresh () End If End Sub 'page Setup dialog box Private Sub pagesetup_onclick (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pagesetup .Click Dim pagesetup As New PageSetupDialog pagesetup.Document = newprintdocument If pagesetup.ShowDialog = DialogResult.OK Then totalpage = 0 printstream.BaseStream.Seek (0, SeekOrigin.Begin) PrintPreviewControl1.InvalidatePreview () Me.Refresh () End If End Sub

'Print Document Private Sub PRINTTHIS_ONCLICK (Byval E AS System.EventArgs) Handles PrintThis.Click NewPrintDocument.Print () End Sub

'Close document flow Private Sub previewcontrol_onclose (ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed If Not (printstream Is Nothing) Then printstream.Close () when the window is closed End If End Sub

'Private Sub NumericUpDown1_ValueChanged changing the page currently displayed (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pagecount.ValueChanged PrintPreviewControl1.StartPage = pagecount.Value - 1 End Sub

转载请注明原文地址:https://www.9cbs.com/read-74768.html

New Post(0)