VB.Net Tutorial/GUI/Text File Print — различия между версиями

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

Версия 19:40, 26 мая 2010

Print text file

<source lang="vbnet">Imports System.IO Imports System.Text.Encoding Imports System.Drawing Imports System.Drawing.Printing Imports System.Windows.Forms public class PrintTextFile

  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
 Private components As System.ruponentModel.IContainer
 Friend WithEvents PrintDialog1 As System.Windows.Forms.PrintDialog
 Friend WithEvents PrintPreviewDialog1 As System.Windows.Forms.PrintPreviewDialog
 Friend WithEvents PageSetupDialog1 As System.Windows.Forms.PageSetupDialog
 Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
 Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
 Friend WithEvents MenuItem5 As System.Windows.Forms.MenuItem
 Friend WithEvents mnuPreview As System.Windows.Forms.MenuItem
 Friend WithEvents mnuPrint As System.Windows.Forms.MenuItem
 Friend WithEvents mnuExit As System.Windows.Forms.MenuItem
 Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
 Friend WithEvents Panel1 As System.Windows.Forms.Panel
 Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
 Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
 Friend WithEvents mnuOpen As System.Windows.Forms.MenuItem
 Friend WithEvents mnuPageSetup As System.Windows.Forms.MenuItem
 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.PrintDialog1 = New System.Windows.Forms.PrintDialog()
       Me.PrintPreviewDialog1 = New System.Windows.Forms.PrintPreviewDialog()
       Me.PageSetupDialog1 = New System.Windows.Forms.PageSetupDialog()
       Me.MainMenu1 = New System.Windows.Forms.MainMenu()
       Me.MenuItem1 = New System.Windows.Forms.MenuItem()
       Me.mnuOpen = New System.Windows.Forms.MenuItem()
       Me.MenuItem3 = New System.Windows.Forms.MenuItem()
       Me.mnuPageSetup = New System.Windows.Forms.MenuItem()
       Me.mnuPreview = New System.Windows.Forms.MenuItem()
       Me.mnuPrint = New System.Windows.Forms.MenuItem()
       Me.MenuItem5 = New System.Windows.Forms.MenuItem()
       Me.mnuExit = New System.Windows.Forms.MenuItem()
       Me.Panel1 = New System.Windows.Forms.Panel()
       Me.TextBox1 = New System.Windows.Forms.TextBox()
       Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
       Me.Panel1.SuspendLayout()
       Me.SuspendLayout()
       "
       "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(375, 17)
       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
       "
       "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.mnuOpen, Me.MenuItem3, Me.mnuPageSetup, Me.mnuPreview, Me.mnuPrint, Me.MenuItem5, Me.mnuExit})
       Me.MenuItem1.Text = "&File"
       "
       "mnuOpen
       "
       Me.mnuOpen.Index = 0
       Me.mnuOpen.Text = "Open"
       "
       "MenuItem3
       "
       Me.MenuItem3.Index = 1
       Me.MenuItem3.Text = "-"
       "
       "mnuPageSetup
       "
       Me.mnuPageSetup.Index = 2
       Me.mnuPageSetup.Text = "Page Setup"
       "
       "mnuPreview
       "
       Me.mnuPreview.Index = 3
       Me.mnuPreview.Text = "Print Preview"
       "
       "mnuPrint
       "
       Me.mnuPrint.Index = 4
       Me.mnuPrint.Text = "Print"
       "
       "MenuItem5
       "
       Me.MenuItem5.Index = 5
       Me.MenuItem5.Text = "-"
       "
       "mnuExit
       "
       Me.mnuExit.Index = 6
       Me.mnuExit.Text = "Exit"
       "
       "Panel1
       "
       Me.Panel1.Controls.AddRange(New System.Windows.Forms.Control() {Me.TextBox1})
       Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
       Me.Panel1.DockPadding.All = 5
       Me.Panel1.Name = "Panel1"
       Me.Panel1.Size = New System.Drawing.Size(563, 325)
       Me.Panel1.TabIndex = 0
       "
       "TextBox1
       "
       Me.TextBox1.Dock = System.Windows.Forms.DockStyle.Fill
       Me.TextBox1.Location = New System.Drawing.Point(6, 5)
       Me.TextBox1.Multiline = True
       Me.TextBox1.Name = "TextBox1"
       Me.TextBox1.Size = New System.Drawing.Size(551, 315)
       Me.TextBox1.TabIndex = 0
       Me.TextBox1.Text = ""
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
       Me.ClientSize = New System.Drawing.Size(563, 325)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Panel1})
       Me.Menu = Me.MainMenu1
       Me.Name = "Form1"
       Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
       Me.Text = "Dialog Application"
       Me.Panel1.ResumeLayout(False)
       Me.ResumeLayout(False)
   End Sub
 Private printerSettings As System.Drawing.Printing.PageSettings
 Private printingFont As Font
 Private streamReader As StreamReader
 Private filename As String
 Private Sub mnuPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPageSetup.Click
   With PageSetupDialog1
     Try
       If (printerSettings Is Nothing) Then
         printerSettings = New System.Drawing.Printing.PageSettings()
       End If
       .AllowMargins = True
       .AllowOrientation = True
       .AllowPaper = True
       .AllowPrinter = True
       .PageSettings = printerSettings
       .ShowDialog()
     Catch ex As Exception
       MessageBox.Show(ex.StackTrace.ToString(), "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
     End Try
   End With
 End Sub
 Private Sub mnuPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPreview.Click
   If Not filename Is Nothing Then
     Try
       streamReader = New StreamReader(filename)
       Try
         printingFont = New Font("Arial", 10)
         Dim pd As New PrintDocument()
         AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
         If Not (printerSettings Is Nothing) Then
           pd.DefaultPageSettings = printerSettings
         End If
         With PrintPreviewDialog1
           .Document = pd
           .ShowDialog()
         End With
       Finally
         streamReader.Close()
       End Try
     Catch ex As Exception
       MessageBox.Show(ex.Message, "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
     End Try
   Else
     MessageBox.Show("Please select file first.", "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
   End If
 End Sub
 Private Sub mnuPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPrint.Click
   If Not filename Is Nothing Then
     Try
       streamReader = New StreamReader(filename)
       Try
         printingFont = New Font("Arial", 10)
         Dim pd As New PrintDocument()
         AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
         If Not (printerSettings Is Nothing) Then
           pd.DefaultPageSettings = printerSettings
         End If
         With PrintDialog1
           .Document = pd
           .AllowPrintToFile = True
           .AllowSelection = True
           .AllowSomePages = True
           If .ShowDialog() = DialogResult.OK Then
             pd.Print()
           End If
         End With
       Finally
         streamReader.Close()
       End Try
     Catch ex As Exception
       MessageBox.Show(ex.StackTrace.ToString, "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
     End Try
   Else
     MessageBox.Show("Please select file first.", "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
   End If
 End Sub
 Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
   Dim linesPerPage As Single = 0
   Dim yPos As Single = 0
   Dim count As Integer = 0
   Dim leftMargin As Single = ev.MarginBounds.Left
   Dim topMargin As Single = ev.MarginBounds.Top
   Dim line As String = Nothing
   linesPerPage = ev.MarginBounds.Height / printingFont.GetHeight(ev.Graphics)
   While count < linesPerPage
     line = streamReader.ReadLine()
     If line Is Nothing Then
       Exit While
     End If
     yPos = topMargin + count * printingFont.GetHeight(ev.Graphics)
     ev.Graphics.DrawString(line, printingFont, Brushes.Black, leftMargin, yPos, New StringFormat())
     count += 1
   End While
   If Not (line Is Nothing) Then
     ev.HasMorePages = True
   Else
     ev.HasMorePages = False
   End If
 End Sub
 Private Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click
   Dim sr As StreamReader = Nothing
   Dim fs As FileStream = Nothing
   With OpenFileDialog1
     .InitialDirectory = "C:\"
     .Filter = "Text files (*.txt)|*.txt"
     .FilterIndex = 2
     .RestoreDirectory = True
     .ShowHelp = True
     .Title = "Open File Dialog"
     If .ShowDialog() = DialogResult.OK Then
       Me.Text = .FileName
       filename = .FileName
       TextBox1.Text = ""
       Try
         fs = New FileStream(.FileName, FileMode.Open, FileAccess.Read)
         sr = New StreamReader(fs, System.Text.Encoding.Default)
         TextBox1.Text = sr.ReadToEnd()
       Catch ex As Exception
         MessageBox.Show(ex.StackTrace.ToString(), "Print", _
           MessageBoxButtons.OK, MessageBoxIcon.Error, _
           MessageBoxDefaultButton.Button1)
       Finally
         If Not (sr Is Nothing) Then
           sr.Close()
         End If
         If Not (fs Is Nothing) Then
           fs.Close()
         End If
       End Try
     End If
   End With
 End Sub

End Class</source>