VB.Net/GUI/Dialog Print

Материал из VB Эксперт
Перейти к: навигация, поиск

Common Dialog: FolderBrowser, Print, Color, Save, Open, Font Dialog

<source lang="vbnet"> Imports System Imports System.Collections Imports System.ruponentModel Imports System.Windows.Forms Imports System.Data Imports System.Configuration Imports System.Resources Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.IO Imports System.Drawing.Printing

Public Class MainClass

   Shared Sub Main()
       Dim myform As Form = New Dialogs()
       Application.Run(myform)
   End Sub

End Class Public Class Dialogs

   "Declare variable
   Private strFileName As String
   Private objStreamToPrint As StreamReader
   Private objPrintFont As Font
   Private Sub btnOpen_Click(ByVal sender As Object, _
       ByVal e As System.EventArgs) Handles btnOpen.Click
       "Set the Open dialog properties
       With OpenFileDialog1
           .Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"
           .FilterIndex = 1
           .Title = "Demo Open File Dialog"
       End With
       "Show the Open dialog and if the user clicks the Open button,
       "load the file
       If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           Dim allText As String
           Try
               "Save the file name
               strFileName = OpenFileDialog1.FileName
               "Read the contents of the file
               allText = My.ruputer.FileSystem.ReadAllText(strFileName)
               "Display the file contents in the TextBox
               txtFile.Text = allText
           Catch fileException As Exception
               Throw fileException
           End Try
       End If
   End Sub
   Private Sub btnSave_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnSave.Click
       "Set the Save dialog properties
       With SaveFileDialog1
           .DefaultExt = "txt"
           .FileName = strFileName
           .Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"
           .FilterIndex = 1
           .OverwritePrompt = True
           .Title = "Demo Save File Dialog"
       End With
       "Show the Save dialog and if the user clicks the Save button,
       "save the file
       If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           Try
               "Save the file name
               strFileName = SaveFileDialog1.FileName
               Dim filePath As String
               "Open or Create the file
               filePath = System.IO.Path.rubine( _
                   My.ruputer.FileSystem.SpecialDirectories.MyDocuments, _
                   strFileName)
               "Replace the contents of the file
               My.ruputer.FileSystem.WriteAllText(filePath, txtFile.Text, False)
           Catch fileException As Exception
               Throw fileException
           End Try
       End If
   End Sub
   Private Sub btnFont_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnFont.Click
       "Set the FontDialog control properties
       FontDialog1.ShowColor = True
       "Show the Font dialog
       If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           "If the OK button was clicked set the font
           "in the text box on the form
           txtFile.Font = FontDialog1.Font
           "Set the color of the font in the text box on the form
           txtFile.ForeColor = FontDialog1.Color
       End If
   End Sub
   Private Sub btnColor_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnColor.Click
       "Show the Color dialog
       If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           "Set the BackColor property of the form
           Me.BackColor = ColorDialog1.Color
       End If
   End Sub
   Private Sub btnPrint_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnPrint.Click
       "Declare an object for the PrintDocument class
       Dim objPrintDocument As PrintDocument = New PrintDocument()
       "Set the DocumentName property
       objPrintDocument.DocumentName = "Text File Print Demo"
       PrintDialog1.AllowPrintToFile = False
       PrintDialog1.AllowSelection = False
       PrintDialog1.AllowSomePages = False
       PrintDialog1.Document = objPrintDocument
       If PrintDialog1.ShowDialog() = DialogResult.OK Then
           objStreamToPrint = New StreamReader(strFileName)
           objPrintFont = New Font("Arial", 10)
           AddHandler objPrintDocument.PrintPage, _
               AddressOf objPrintDocument_PrintPage
           objPrintDocument.PrinterSettings = PrintDialog1.PrinterSettings
           objPrintDocument.Print()
           objStreamToPrint.Close()
           objStreamToPrint = Nothing
       End If
   End Sub
   Private Sub objPrintDocument_PrintPage(ByVal sender As Object, _
       ByVal e As System.Drawing.Printing.PrintPageEventArgs)
       Dim sngLinesPerpage As Single = 0
       Dim sngVerticalPosition As Single = 0
       Dim intLineCount As Integer = 0
       Dim sngLeftMargin As Single = e.MarginBounds.Left
       Dim sngTopMargin As Single = e.MarginBounds.Top
       Dim strLine As String
       sngLinesPerpage = _
          e.MarginBounds.Height / objPrintFont.GetHeight(e.Graphics)
       strLine = objStreamToPrint.ReadLine()
       While (intLineCount < sngLinesPerpage And Not (strLine Is Nothing))
           sngVerticalPosition = sngTopMargin + _
               (intLineCount * objPrintFont.GetHeight(e.Graphics))
           e.Graphics.DrawString(strLine, objPrintFont, Brushes.Black, _
               sngLeftMargin, sngVerticalPosition, New StringFormat())
           intLineCount = intLineCount + 1
           If (intLineCount < sngLinesPerpage) Then
               strLine = objStreamToPrint.ReadLine()
           End If
       End While
       If (strLine <> Nothing) Then
           e.HasMorePages = True
       Else
           e.HasMorePages = False
       End If
   End Sub
   Private Sub btnBrowse_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnBrowse.Click
       FolderBrowserDialog1.Description = "Select a folder for your backups:"
       FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer
       FolderBrowserDialog1.ShowNewFolderButton = False
       If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           "Display the selected folder
           txtFile.Text = FolderBrowserDialog1.SelectedPath
       End If
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Dialogs

   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.txtFile = New System.Windows.Forms.TextBox
       Me.btnOpen = New System.Windows.Forms.Button
       Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog
       Me.btnSave = New System.Windows.Forms.Button
       Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog
       Me.btnFont = New System.Windows.Forms.Button
       Me.FontDialog1 = New System.Windows.Forms.FontDialog
       Me.btnColor = New System.Windows.Forms.Button
       Me.ColorDialog1 = New System.Windows.Forms.ColorDialog
       Me.btnPrint = New System.Windows.Forms.Button
       Me.PrintDialog1 = New System.Windows.Forms.PrintDialog
       Me.btnBrowse = New System.Windows.Forms.Button
       Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog
       Me.SuspendLayout()
       "
       "txtFile
       "
       Me.txtFile.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.txtFile.Location = New System.Drawing.Point(8, 8)
       Me.txtFile.Multiline = True
       Me.txtFile.Name = "txtFile"
       Me.txtFile.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
       Me.txtFile.Size = New System.Drawing.Size(352, 264)
       Me.txtFile.TabIndex = 0
       "
       "btnOpen
       "
       Me.btnOpen.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnOpen.Location = New System.Drawing.Point(367, 8)
       Me.btnOpen.Name = "btnOpen"
       Me.btnOpen.Size = New System.Drawing.Size(75, 23)
       Me.btnOpen.TabIndex = 1
       Me.btnOpen.Text = "Open"
       "
       "OpenFileDialog1
       "
       Me.OpenFileDialog1.FileName = "OpenFileDialog1"
       "
       "btnSave
       "
       Me.btnSave.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnSave.Location = New System.Drawing.Point(367, 38)
       Me.btnSave.Name = "btnSave"
       Me.btnSave.Size = New System.Drawing.Size(75, 23)
       Me.btnSave.TabIndex = 2
       Me.btnSave.Text = "Save"
       "
       "btnFont
       "
       Me.btnFont.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnFont.Location = New System.Drawing.Point(367, 68)
       Me.btnFont.Name = "btnFont"
       Me.btnFont.Size = New System.Drawing.Size(75, 23)
       Me.btnFont.TabIndex = 3
       Me.btnFont.Text = "Font"
       "
       "btnColor
       "
       Me.btnColor.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnColor.Location = New System.Drawing.Point(367, 98)
       Me.btnColor.Name = "btnColor"
       Me.btnColor.Size = New System.Drawing.Size(75, 23)
       Me.btnColor.TabIndex = 4
       Me.btnColor.Text = "Color"
       "
       "btnPrint
       "
       Me.btnPrint.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnPrint.Location = New System.Drawing.Point(367, 128)
       Me.btnPrint.Name = "btnPrint"
       Me.btnPrint.Size = New System.Drawing.Size(75, 23)
       Me.btnPrint.TabIndex = 5
       Me.btnPrint.Text = "Print"
       "
       "btnBrowse
       "
       Me.btnBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.btnBrowse.Location = New System.Drawing.Point(367, 158)
       Me.btnBrowse.Name = "btnBrowse"
       Me.btnBrowse.Size = New System.Drawing.Size(75, 23)
       Me.btnBrowse.TabIndex = 6
       Me.btnBrowse.Text = "Browse"
       "
       "FolderBrowserDialog1
       "
       Me.FolderBrowserDialog1.SelectedPath = "FolderBrowserDialog1"
       "
       "Dialogs
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(448, 277)
       Me.Controls.Add(Me.btnBrowse)
       Me.Controls.Add(Me.btnPrint)
       Me.Controls.Add(Me.btnColor)
       Me.Controls.Add(Me.btnFont)
       Me.Controls.Add(Me.btnSave)
       Me.Controls.Add(Me.btnOpen)
       Me.Controls.Add(Me.txtFile)
       Me.Name = "Dialogs"
       Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
       Me.Text = "Dialogs"
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents txtFile As System.Windows.Forms.TextBox
   Friend WithEvents btnOpen As System.Windows.Forms.Button
   Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
   Friend WithEvents btnSave As System.Windows.Forms.Button
   Friend WithEvents SaveFileDialog1 As System.Windows.Forms.SaveFileDialog
   Friend WithEvents btnFont As System.Windows.Forms.Button
   Friend WithEvents FontDialog1 As System.Windows.Forms.FontDialog
   Friend WithEvents btnColor As System.Windows.Forms.Button
   Friend WithEvents ColorDialog1 As System.Windows.Forms.ColorDialog
   Friend WithEvents btnPrint As System.Windows.Forms.Button
   Friend WithEvents PrintDialog1 As System.Windows.Forms.PrintDialog
   Friend WithEvents btnBrowse As System.Windows.Forms.Button
   Friend WithEvents FolderBrowserDialog1 As System.Windows.Forms.FolderBrowserDialog

End Class

      </source>


Display Print dialog

<source lang="vbnet"> Imports System Imports System.Collections Imports System.Data Imports System.IO Imports System.Xml.Serialization Imports System.Windows.Forms Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Drawing.Text Imports System.Drawing.Printing

Public Class MainClass

   Shared Sub Main()
      Dim form1 As Form = New Form1()
      Application.Run(form1) 
    End Sub

End Class


Public Class Form1

   Inherits System.Windows.Forms.Form
  1. 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
   Friend WithEvents PrintDocument1 As System.Drawing.Printing.PrintDocument
   Friend WithEvents Button1 As System.Windows.Forms.Button
   Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.Container
   "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()
       Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
       Me.PrintDocument1 = New System.Drawing.Printing.PrintDocument()
       Me.Button1 = New System.Windows.Forms.Button()
       Me.PictureBox1 = New System.Windows.Forms.PictureBox()
       Me.SuspendLayout()
       "
       "PrintDocument1
       "
       "
       "Button1
       "
       Me.Button1.Location = New System.Drawing.Point(16, 216)
       Me.Button1.Name = "Button1"
       Me.Button1.Size = New System.Drawing.Size(264, 32)
       Me.Button1.TabIndex = 0
       Me.Button1.Text = "Print"
       "
       "PictureBox1
       "
       Me.PictureBox1.Image = New System.Drawing.Bitmap("figure2.bmp")
       Me.PictureBox1.Location = New System.Drawing.Point(16, 8)
       Me.PictureBox1.Name = "PictureBox1"
       Me.PictureBox1.Size = New System.Drawing.Size(264, 200)
       Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
       Me.PictureBox1.TabIndex = 1
       Me.PictureBox1.TabStop = False
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
       Me.ClientSize = New System.Drawing.Size(292, 268)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.PictureBox1, Me.Button1})
       Me.Name = "Form1"
       Me.Text = "Printing demo"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   End Sub
   Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
 ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
 Handles PrintDocument1.PrintPage
       Dim g As Graphics
       g = e.Graphics
       g.DrawImage(PictureBox1.Image, 0, 0)
       g.Dispose()
       e.HasMorePages = False
   End Sub
   Private Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
       Dim PrintDialog1 As New PrintDialog()
       PrintDialog1.Document = PrintDocument1
       If PrintDialog1.ShowDialog() = DialogResult.OK Then
           PrintDocument1.Print()
       End If
   End Sub

End Class

      </source>