VB.Net Tutorial/GUI/PrintPreview Dialog — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 12:57, 26 мая 2010
PrintPreview page count
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Printing
public class PrintPreviewPagesOut
public Shared Sub Main
Application.Run(New Form1)
End Sub
End class
Public Class Form1
Private currentPageNumber As Integer = 1
Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click
If ppvdlgShapes.ShowDialog() = Windows.Forms.DialogResult.OK Then
ppvdlgShapes.Document.Print()
End If
End Sub
Private Sub pdocShapes_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pdocShapes.PrintPage
Select Case currentPageNumber
Case 1
e.Graphics.DrawRectangle(Pens.Green, e.MarginBounds())
e.HasMorePages = True
currentPageNumber += 1
Case 2
e.Graphics.DrawRectangle(Pens.Green, e.MarginBounds())
e.HasMorePages = True
currentPageNumber += 1
Case 3
e.Graphics.DrawEllipse(Pens.Blue, e.MarginBounds())
e.HasMorePages = False
currentPageNumber = 1
End Select
End Sub
End Class
<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _
Partial Public Class Form1
Inherits System.Windows.Forms.Form
"Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
"Required by the Windows Form Designer
Private components As System.ruponentModel.IContainer
"NOTE: The following procedure is required by the Windows Form Designer
"It can be modified using the Windows Form Designer.
"Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.btnPreview = New System.Windows.Forms.Button
Me.pdocShapes = New System.Drawing.Printing.PrintDocument
Me.ppvdlgShapes = New System.Windows.Forms.PrintPreviewDialog
Me.SuspendLayout()
"
"btnPreview
"
Me.btnPreview.Location = New System.Drawing.Point(112, 48)
Me.btnPreview.Name = "btnPreview"
Me.btnPreview.Size = New System.Drawing.Size(64, 24)
Me.btnPreview.TabIndex = 1
Me.btnPreview.Text = "Preview"
"
"ppvdlgShapes
"
Me.ppvdlgShapes.AutoScrollMargin = New System.Drawing.Size(0, 0)
Me.ppvdlgShapes.AutoScrollMinSize = New System.Drawing.Size(0, 0)
Me.ppvdlgShapes.ClientSize = New System.Drawing.Size(400, 300)
Me.ppvdlgShapes.Document = Me.pdocShapes
Me.ppvdlgShapes.Enabled = True
Me.ppvdlgShapes.Name = "ppvdlgShapes"
Me.ppvdlgShapes.Visible = False
"
"Form1
"
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 142)
Me.Controls.Add(Me.btnPreview)
Me.Name = "Form1"
Me.Text = "UsePrintPreviewDialog"
Me.ResumeLayout(False)
End Sub
Friend WithEvents btnPreview As System.Windows.Forms.Button
Friend WithEvents pdocShapes As System.Drawing.Printing.PrintDocument
Friend WithEvents ppvdlgShapes As System.Windows.Forms.PrintPreviewDialog
End Class
Print, PrintPreview Dialog and Print Dialog
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms
Imports System.Drawing.Printing
public class PrintPreviewDemo
public Shared Sub Main
Application.Run(New MainForm)
End Sub
End class
Public Class MainForm
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
"This call is required by the Windows Form Designer.
InitializeComponent()
"Add any initialization after the InitializeComponent() call
End Sub
"Form overrides dispose to clean up the component list.
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
"Required by the Windows Form Designer
Private components As System.ruponentModel.IContainer
"NOTE: The following procedure is required by the Windows Form Designer
"It can be modified using the Windows Form Designer.
"Do not modify it using the code editor.
Friend WithEvents printButton As System.Windows.Forms.Button
Friend WithEvents previewButton As System.Windows.Forms.Button
Friend WithEvents previewControlButton As System.Windows.Forms.Button
Friend WithEvents pageSetupButton As System.Windows.Forms.Button
Friend WithEvents pageSetupDialog1 As System.Windows.Forms.PageSetupDialog
Friend WithEvents printDialog1 As System.Windows.Forms.PrintDialog
Friend WithEvents printDocument1 As System.Drawing.Printing.PrintDocument
Friend WithEvents printPreviewDialog1 As System.Windows.Forms.PrintPreviewDialog
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.printButton = New System.Windows.Forms.Button()
Me.previewButton = New System.Windows.Forms.Button()
Me.previewControlButton = New System.Windows.Forms.Button()
Me.pageSetupButton = New System.Windows.Forms.Button()
Me.pageSetupDialog1 = New System.Windows.Forms.PageSetupDialog()
Me.printDialog1 = New System.Windows.Forms.PrintDialog()
Me.printDocument1 = New System.Drawing.Printing.PrintDocument()
Me.printPreviewDialog1 = New System.Windows.Forms.PrintPreviewDialog()
Me.SuspendLayout()
"
"printButton
"
Me.printButton.Location = New System.Drawing.Point(24, 16)
Me.printButton.Name = "printButton"
Me.printButton.Size = New System.Drawing.Size(112, 23)
Me.printButton.TabIndex = 3
Me.printButton.Text = "Print"
"
"previewButton
"
Me.previewButton.Location = New System.Drawing.Point(24, 80)
Me.previewButton.Name = "previewButton"
Me.previewButton.Size = New System.Drawing.Size(112, 23)
Me.previewButton.TabIndex = 6
Me.previewButton.Text = "Preview Dialog"
"
"previewControlButton
"
Me.previewControlButton.Location = New System.Drawing.Point(24, 48)
Me.previewControlButton.Name = "previewControlButton"
Me.previewControlButton.Size = New System.Drawing.Size(112, 23)
Me.previewControlButton.TabIndex = 4
Me.previewControlButton.Text = "Preview Control"
"
"pageSetupButton
"
Me.pageSetupButton.Location = New System.Drawing.Point(24, 112)
Me.pageSetupButton.Name = "pageSetupButton"
Me.pageSetupButton.Size = New System.Drawing.Size(112, 23)
Me.pageSetupButton.TabIndex = 5
Me.pageSetupButton.Text = "Page Setup"
"
"pageSetupDialog1
"
Me.pageSetupDialog1.MinMargins = New System.Drawing.Printing.Margins(50, 50, 50, 50)
Me.pageSetupDialog1.ShowHelp = True
"
"printDialog1
"
Me.printDialog1.Document = Me.printDocument1
"
"printDocument1
"
"
"printPreviewDialog1
"
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.Enabled = True
Me.printPreviewDialog1.Location = New System.Drawing.Point(44, 58)
Me.printPreviewDialog1.MaximumSize = New System.Drawing.Size(0, 0)
Me.printPreviewDialog1.Name = "printPreviewDialog1"
Me.printPreviewDialog1.Opacity = 1
Me.printPreviewDialog1.TransparencyKey = System.Drawing.Color.Empty
Me.printPreviewDialog1.Visible = False
"
"MainForm
"
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(160, 150)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.printButton, Me.previewButton, Me.previewControlButton, Me.pageSetupButton})
Me.Name = "MainForm"
Me.Text = "MainForm"
Me.ResumeLayout(False)
End Sub
#End Region
Dim totalPages As Integer = 13
Dim page As Integer
Dim maxPage As Integer
Dim myFont As Font = Nothing
Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles printButton.Click
printDocument1.DocumentName = "myFile.txt"
printDocument1.PrinterSettings.FromPage = 1
printDocument1.PrinterSettings.ToPage = totalPages
printDocument1.PrinterSettings.MinimumPage = 1
printDocument1.PrinterSettings.MaximumPage = totalPages
printDialog1.AllowSomePages = True
If printDialog1.ShowDialog() = DialogResult.OK Then
If printDialog1.PrinterSettings.PrintRange = Drawing.Printing.PrintRange.SomePages Then
page = printDocument1.PrinterSettings.FromPage
maxPage = printDocument1.PrinterSettings.ToPage
Else
page = 1
maxPage = totalPages
End If
End If
printDocument1.Print()
End Sub
Sub printDocument1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles printDocument1.PrintPage
Dim g As Graphics = e.Graphics
g.DrawString("Hello, " & vbCrLf & "Printer" & vbCrLf & "Page: " & page, myFont, Brushes.Black, RectangleF.op_Implicit(e.MarginBounds))
page = page + 1
e.HasMorePages = (page <= maxPage)
End Sub
Private Sub previewControlButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles previewControlButton.Click
page = 1
maxPage = totalPages
printPreviewDialog1.Document = printDocument1
printPreviewDialog1.ShowDialog()
End Sub
Private Sub previewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles previewButton.Click
page = 1
maxPage = totalPages
Dim dlg As CustomPrintPreviewDialog = New CustomPrintPreviewDialog()
dlg.Document = printDocument1
dlg.ShowDialog()
End Sub
Private Sub pageSetupButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pageSetupButton.Click
pageSetupDialog1.Document = printDocument1
pageSetupDialog1.ShowDialog()
End Sub
Private Sub printDocument1_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles printDocument1.BeginPrint
myFont = New Font("Lucide Console", 72)
End Sub
Private Sub printDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles printDocument1.EndPrint
myFont.Dispose()
myFont = Nothing
End Sub
End Class
Public Class CustomPrintPreviewDialog
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
"This call is required by the Windows Form Designer.
InitializeComponent()
"Add any initialization after the InitializeComponent() call
End Sub
"Form overrides dispose to clean up the component list.
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
"Required by the Windows Form Designer
Private components As System.ruponentModel.IContainer
"NOTE: The following procedure is required by the Windows Form Designer
"It can be modified using the Windows Form Designer.
"Do not modify it using the code editor.
Friend WithEvents printPreviewControl1 As System.Windows.Forms.PrintPreviewControl
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.printPreviewControl1 = New System.Windows.Forms.PrintPreviewControl()
Me.SuspendLayout()
"
"printPreviewControl1
"
Me.printPreviewControl1.AutoZoom = False
Me.printPreviewControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.printPreviewControl1.Name = "printPreviewControl1"
Me.printPreviewControl1.Size = New System.Drawing.Size(376, 398)
Me.printPreviewControl1.TabIndex = 1
Me.printPreviewControl1.UseAntiAlias = True
Me.printPreviewControl1.Zoom = 0.30000001192092896
"
"CustomPrintPreviewDialog
"
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(376, 398)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.printPreviewControl1})
Me.Name = "CustomPrintPreviewDialog"
Me.Text = "CustomPrintPreviewDialog"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub printPreviewControl1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles printPreviewControl1.Click
If (Control.ModifierKeys And Keys.Shift) = 0 Then
printPreviewControl1.Zoom = printPreviewControl1.Zoom * 2.0
Else
printPreviewControl1.Zoom = printPreviewControl1.Zoom / 2.0
End If
End Sub
Public Property Document() As PrintDocument
Get
Return printPreviewControl1.Document
End Get
Set(ByVal Value As PrintDocument)
printPreviewControl1.Document = Value
End Set
End Property
End Class