VB.Net Tutorial/GUI/Text File Print — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 16:40, 26 мая 2010
Print text file
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