Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in - Phạm Đức Lập

Nội dung thảo luận:

- In đồ họa trong chương trình VB

- In văn bản trong chương trình VB

- In tài liệu nhiều trang trong chương trình VB

- Sử dụng hộp thoại Print, Page Setup, Print Preview

Trong chương này chúng ta sẽ học cách tích hợp chức năng in ấn vào trong form cũng như

cách xử lý in ấn đồ họa, in văn bản và tài liệu nhiều trang.

Chú ý:

- Lớp đối tượng PrintDocument cung cấp nhiều chức năng in ấn hơn

- Chúng ta sử dụng các điều khiển hộp thoại PrintDialog, PrintPreViewDialog và

PageSetupDialog để thực thi tác vụ in ấn.

- Để in tài liệu nhiều trang, chúng ta phải tạo ra thủ tục sử lý sự kiện PrintPage xử

lý thao tác in mỗi lần từng trang tài liệu. Tuy nhiên hầu như các chức năng in ấn

chúng ta đều được hỗ trợ trong thư viện System.Drawing.Printing.

1. Sử dụng lớp Printdocument

Printdocument là lớp bạn thường xuyên sử dụng khi in ấn. Việc sử dụng lớp này bằng cách

chọn nó trên toolbox và thêm nó vào dự án như các điều khiển khác. Lớp này nằm trong

thư viện System.Drawing.Printing. Bạn cần imports nó ra ở đầu chương trình khi muốn sử

dụng. Bài tập MyPrintsGraphics sau đây sẽ hướng dẫn cách sử dụng đối tượng này.

1.1. Sử dụng điều khiển PrintDocument

Tìm hiểu chương trình:

Chương trình sẽ bao gồm một textbox cho phép nhập đường dẫn của file graphic cần in và

một nút nhấn cho phép in ra. Vì ta không nối máy in nên ta sẽ lưu ra một file định dạng

*.mdi.

Thiết kế giao diện:

Bạn tạo mới một Solution và thêm vào một dự án cùng tên là MyPrintsGraphics và thiết kế

giao diện như hình dưới đây. Trong đó các đối tượng có thuộc tính như sau:

- TextBox1: thuộc tính text là đường dẫn đến file graphics của bạn. Ở đây là file

NFS2SER.ICO tôi đã chép vào thư mục chứa dự án

pdf 16 trang yennguyen 3340
Bạn đang xem tài liệu "Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in - Phạm Đức Lập", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in - Phạm Đức Lập

Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in - Phạm Đức Lập
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 1 - Add: cnt-44-dh, VIMARU 
Chương 18: 
Làm việc với máy in 
--------oOo-------- 
Nội dung thảo luận: 
- In đồ họa trong chương trình VB 
- In văn bản trong chương trình VB 
- In tài liệu nhiều trang trong chương trình VB 
- Sử dụng hộp thoại Print, Page Setup, Print Preview 
Trong chương này chúng ta sẽ học cách tích hợp chức năng in ấn vào trong form cũng như 
cách xử lý in ấn đồ họa, in văn bản và tài liệu nhiều trang. 
Chú ý: 
- Lớp đối tượng PrintDocument cung cấp nhiều chức năng in ấn hơn 
- Chúng ta sử dụng các điều khiển hộp thoại PrintDialog, PrintPreViewDialog và 
PageSetupDialog để thực thi tác vụ in ấn. 
- Để in tài liệu nhiều trang, chúng ta phải tạo ra thủ tục sử lý sự kiện PrintPage xử 
lý thao tác in mỗi lần từng trang tài liệu. Tuy nhiên hầu như các chức năng in ấn 
chúng ta đều được hỗ trợ trong thư viện System.Drawing.Printing. 
1. Sử dụng lớp Printdocument 
Printdocument là lớp bạn thường xuyên sử dụng khi in ấn. Việc sử dụng lớp này bằng cách 
chọn nó trên toolbox và thêm nó vào dự án như các điều khiển khác. Lớp này nằm trong 
thư viện System.Drawing.Printing. Bạn cần imports nó ra ở đầu chương trình khi muốn sử 
dụng. Bài tập MyPrintsGraphics sau đây sẽ hướng dẫn cách sử dụng đối tượng này. 
1.1. Sử dụng điều khiển PrintDocument 
Tìm hiểu chương trình: 
Chương trình sẽ bao gồm một textbox cho phép nhập đường dẫn của file graphic cần in và 
một nút nhấn cho phép in ra. Vì ta không nối máy in nên ta sẽ lưu ra một file định dạng 
*.mdi. 
Thiết kế giao diện: 
Bạn tạo mới một Solution và thêm vào một dự án cùng tên là MyPrintsGraphics và thiết kế 
giao diện như hình dưới đây. Trong đó các đối tượng có thuộc tính như sau: 
- TextBox1: thuộc tính text là đường dẫn đến file graphics của bạn. Ở đây là file 
NFS2SER.ICO tôi đã chép vào thư mục chứa dự án. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 2 - Add: cnt-44-dh, VIMARU 
- Label1 và nút nhấn có text như hình. 
Bạn cũng thêm vào điều khiển PrintDocument1 từ ToolBox. 
Viết mã: 
Trước hết ta tạo mới một module có tên ModulePrinting.vb chứa hàm PrintGraphic là hàm 
phục vụ in ấn sẽ được triệu gọi trong thủ tục Button1_Click. Nội dung của module như 
sau: 
Imports System.Drawing.Printing 
Module ModulePrinting 
 Public Sub PrintGraphic(ByVal sender As Object, _ 
 ByVal ev As PrintPageEventArgs) 
 'Vẽ ảnh đồ họa bằng DrawImage 
 ev.Graphics.DrawImage _ 
 (Image.FromFile(Form1.TextBox1.Text), _ 
 ev.Graphics.VisibleClipBounds) 
 'Xác định không còn trang khác 
 ev.HasMorePages = False 
 End Sub 
End Module 
Thủ tục này là hạt nhân của tác vụ in ấn từng trang khi sự kiện PrintPage của điều khiển 
PrintDocument1 xảy ra sau lời gọi PrintDocument1.Print(). Trong đó, ev dùng để tham 
chiếu đến các thông số mà PrintDocument truyền vào. Ta dùng ev để lấy về đối tượng 
Graphics dùng vẽ ra máy in đồng thời sử dụng phương thức DrawImage để vẽ ảnh. Thuộc 
tính HasMorePage đặt là false để chỉ in trong một trang. 
Trở lại cửa sổ thiết kế form1. Bạn vào chế độ Code Editor và đặt khai báo sau ở đầu 
Form1: 
 Imports System.Drawing.Printing 
Tiếp theo ta tạo thủ tục Button1_Click như sau: 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 3 - Add: cnt-44-dh, VIMARU 
 Private Sub Button1_Click(ByVal sender As Object, _ 
 ByVal e As System.EventArgs) Handles Button1.Click 
 Try 
 AddHandler PrintDocument1.PrintPage, _ 
 AddressOf ModulePrinting.PrintGraphic 
 PrintDocument1.Print() 
 Catch ex As Exception 
 MessageBox.Show _ 
 ("Sorry-there is problem printing", ex.ToString) 
 End Try 
 End Sub 
Phát biểu AddHandler yêu cầu thủ tục xử lý PrintGraphic trong Module sẽ được triệu gọi 
khi sự kiện PrintPage của điều khiển PrintDocument xảy ra. Hàm AddressOf dùng để chỉ 
định địa chỉ của thủ tục PrintGraphic trong ModulePrint.vb. Đây là kỹ thuật chuyển giao 
(delegate) trong các ngôn ngữ của nền .NET. Bạn chuyển địa chỉ của hàm cho đối tượng và 
đối tượng sẽ triệu gọi hàm. 
Chạy chương trình: 
Ấn F5 để chạy chương trình. Bạn có thể nhập mới một đường dẫn đến đối tượng in hay 
click vào nút nhấn để in luôn. Kết quả: 
Bạn chọn nơi lưu file *.mdi. và ấn nút save để lưu. Bạn cũng có thể dừng tác vụ in bằng 
cách ấn nút Cacel. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 4 - Add: cnt-44-dh, VIMARU 
1.2. In văn bản từ đối tượng TextBox 
Bài tập sau chúng ta sẽ in đoạn văn bản trong một ô textbox. Ta sẽ không dùng trực tiếp 
đối tượng PrintDocument nữa mà tạo nó bằng mã chương trình. Ta cũng dùng phương thức 
Graphics.DrawString thay cho phương thức DrawImage trước đây. 
Bài tập MyTextPrinting: 
Tìm hiểu chương trình: 
Chương trình gồm một ô textbox và một nút nhấn. Ô textbox cho phép nhập đoạn văn bản 
và nút nhấn sẽ tiến hành in đoạn văn bản có trong textbox đó ra. 
Thiết kế giao diện: 
Bạn tạo mới một Solution và thêm vào một dự án cùng tên là MyTextPrinting, thiết kế giao 
diện như hình: 
Trong đó các thuộc tính của các điều khiển như sau: đối tượng TextBox1: ScrollBars – 
Both, MultiLine – True. Các đối tượng và thuộc tính của nó như hình. 
Viết mã: 
Trước hết muốn sử dụng in ấn ta cần đặt khai báo sau ở đầu chương trình: 
 Imports System.Drawing.Printing 
Khai báo một hàm phục vụ in đoạn văn bản trong ô textbox. Bạn tạo ngay trong cửa sổ 
code editor của form1.vb dưới dòng khai báo form1 như sau: 
 Private Sub PrinText(ByVal sender As Object, _ 
 ByVal ev As PrintPageEventArgs) 
 'sử dụng DrawString để vẽ chuỗi cần in 
 ev.Graphics.DrawString(TextBox1.Text, _ 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 5 - Add: cnt-44-dh, VIMARU 
 New Font("Arial", 11, FontStyle.Regular), _ 
 Brushes.Black, 120, 120) 
 'Cho biết không còn trang tiếp theo 
 ev.HasMorePages = False 
 End Sub 
Tạo thủ tục Button1_Click như sau: 
 Try 
 'Khai báo biến PrintDoc có kiểu PrintDocument 
 Dim PrintDoc As New PrintDocument() 
 AddHandler PrintDoc.PrintPage, AddressOf Me.PrinText 
 'Bắt đầu in 
 PrintDoc.Print() 
 Catch ex As Exception 
 MessageBox.Show("Sorry-There is a problem printing", _ 
 ex.ToString()) 
 End Try 
Trong thủ tục này ta khai báo một biến có kiểu PrintDocument thay vì sử dụng trực tiếp 
đối tượng PrintDocument từ ToolBox. Tiếp theo ta cũng sử dụng kỹ thuật chuyển giao để 
chỉ định hàm thực thi cho biến PrintDoc, hàm này là hàm PrinText ta đã khai báo trước đó. 
Cuối cùng là gọi phương thức PrintDoc.Print() để in trang in. 
Chạy chương trình: 
Bạn ấn F5 và nhập vào một đoạn văn bản bất kỳ: 
Cũng giống như bài tập trước, bạn có thể ấn vào nút In văn bản và chờ một cửa sổ in xuất 
hiện để lưu vào một file định dạng .MDI như hình. File .MDI bạn có thể xem trong cùng 
thư mục chứa dự án nếu muốn. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 6 - Add: cnt-44-dh, VIMARU 
2. In file văn bản nhiều trang 
Ta đã sử dụng đối tượng PrintDocument để in đồ họa cũng như in văn bản đơn giản nhưng 
cũng còn rất nhiều vấn đề cần giải quyết. Đó là, PrintDocument không có ký tự ngắt dòng 
(10 và 13), ta cần tự viết mã xử lý ngắt dòng. Để in một văn bản có nhiều trang ta cũng cần 
viết mã ngắt trang. PrintDocument chỉ đơn giản là gửi dữ liệu đến máy in. 
Có hai cách giải quyết vấn đề này. Thứ nhất, sử dụng đối tượng ev có kiểu 
PrintPageEventArgs để xác định trạng thái in sau mỗi trang được đưa ra máy in (kích 
thước trang, số ký tự có thể in trên một trang,). Thứ hai, sử dụng phương thức 
Graphics.MeasureString. Phương thức này dùng để đo xem có chuối in ra sẽ chiếm kích 
thước dài và rộng bao nhiêu trên trang giấy. Chúng ta sẽ sử dụng kỹ thuật này để in tài liệu 
nhiều trang. 
Bài tập MyFilePrinting sau đây sẽ minh họa việc in đó. Chương trình có thể mở một file 
với chiều dài bất kỳ và in nội dung của file đó ra nhiều trang. Ta cũng học cách sử dụng 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 7 - Add: cnt-44-dh, VIMARU 
các hộp thoại cấu hình máy in như PrintDialog cùng cách sử dụng đối tượng RichTextBox, 
OpenFileDialog. Trong đó RichTextBox là ô TextBox mở rộng có thể in và hiển thị được 
rất nhiều loại tài liệu định dạng font chữ, hình ảnh, kiểu tài liệu của MS Word. 
Bài tập MyFilePrinting: 
Tìm hiểu chương trình: 
Chương trình gồm một RichTextBox để hiển thị nội dung văn bản cần in. Hai nút nhấn, 
một nút Open cho phép mở file, một nút Print cho phép in văn bản. 
Thiết kế giao diện: 
Bạn tạo thêm các điều khiển phục vụ mở file, in file như OpenFileDialog1, PrintDocument 
và PrintDialog. Giao diện của chương trình như hình: 
Trong đó thuộc tính của các đối tượng như sau: 
- Button1: Text – “Open”, Name – btnOpen 
- Button2: Text – “Print”, Name – btnPrint, Enable – False 
- RichTextBox1: Name – rxtDocument 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 8 - Add: cnt-44-dh, VIMARU 
Viết mã: 
Khai báo hai thư viện sau trước khai báo lớp Form1: 
 Imports System.IO 'Dùng để xử lý File 
 Imports System.Drawing.Printing 
System.IO cho phép sử dụng lớp FileStream mở và đọc file, System.Drawing.Printing cho 
phép sử dụng các đối tượng in ấn. 
Tiếp theo khai báo các biến dành cho việc in ấn, khai báo đặt ngay sau khai báo lớp form1: 
 Private PrintPageSetting As New PageSettings() 
 Private StringToPrint As String 
 Private PrintFont As New Font("Arial", 10) 
Các biến này dùng khi in trang, biến PrintPageSetting để thiết đặt trang in, biến 
StringToPrint để đọc dòng in, biến PrintFont để thiết đặt font chữ. 
Tạo thủ tục btnOpen_Click để mở file ra đọc: 
 Dim FilePath As String 
 'Hiển thị hộp thoại mở file 
 OpenFileDialog1.Filter = "Text Files (*.txt) | *.txt" 
 OpenFileDialog1.ShowDialog() 
 If OpenFileDialog1.FileName "" Then 
 FilePath = OpenFileDialog1.FileName 
 Try 
 'Đọc nội dụng file vào rxtDocument 
 Dim myFileStream As New FileStream _ 
 (FilePath, FileMode.Open) 
 rxtDocument.LoadFile(myFileStream, _ 
 RichTextBoxStreamType.PlainText) 
 myFileStream.Close() 
 'Chuỗi để in 
 StringToPrint = rxtDocument.Text 
 'Enable nút nhấn Print 
 btnPrint.Enabled = True 
 Catch ex As Exception 
 MsgBox(ex.Message) 
 End Try 
 End If 
Khi ấn vào nút Open, đoạn mã trên sẽ hiển thị một hộp thoại cho phép chọn file. Khi chọn 
file xong, đường dẫn và tên file được lưu vào FileName của OpenFileDialog1. Ta gán 
thuộc tính filename của OpenFileDialog cho biến FilePath. Tiếp theo định nghĩa biến đối 
tượng FileStream để mở và đọc nội dung file. Toàn bộ nội dung file sau đó được tải vào 
RichTextBox rxtDocument nhờ phương thức LoadFile. Toàn bộ nội dung của 
rxtDocument sau đó lại được gán cho biến chuỗi StringToPrint. Nút nhấn Print lúc này 
được hiển thị cho phép click vào nó. 
Bây giờ chúng ta cài đặt đoạn mã cho phép in ấn. Tạo thủ tục btnPrint_Click bằng cách 
double – click vào nút Print trên form1 và nhập vào đoạn mã sau: 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 9 - Add: cnt-44-dh, VIMARU 
 Try 
 'Chỉ định các thiết lập in mặc định 
 PrintDocument1.DefaultPageSettings = PrintPageSetting 
 'Lấy dữ liệu để in 
 StringToPrint = rxtDocument.Text 
 PrintDialog1.Document = PrintDocument1 
 Dim result As DialogResult = PrintDialog1.ShowDialog() 
 'In tài liệu nếu ấn OK 
 If result = Windows.Forms.DialogResult.OK Then 
 PrintDocument1.Print() 
 End If 
 Catch ex As Exception 
 MsgBox(ex.Message) 
 End Try 
Trong đoạn mã trên, ta gán các thiết lập in mặc định của đối tượng PrintDocument1 là biến 
đối tượng PrintPageSetting, gán nội dung in trong ô rxtDocument vào biến StringToPrint. 
Tiếp theo, thuộc tính Document của đối tượng PrintDialog1 được gán bằng với đối tượng 
tài liệu muốn in hay PrintDocument1. Khi hộp thoại cấu hình máy in hiển thị, mọi thiết lập 
của người dùng trong hộp thoại sẽ được áp đặt cho tài liệu này. Tiếp theo ta phải cho hiển 
thị hộp thoại chọn cấu hình máy in để người dùng cấu hình bằng phương thức ShowDialog 
của PrintDialog1. Khi người dùng ấn OK trong hộp thoại cấu hình máy in thì 
PrintDocument1 sẽ gọi phương thức Print() để in. 
Bây giờ ta tạo thủ tục PrintDocument1_PrintPage để thiết đặt các thông số in như ngắt 
dòng, ngắt trang,bằng cách double click vào đối tượng PrintDocument1 trong cửa sổ 
thiết kế form hay chọn trong danh sách class name và method name ở cửa sổ code editor. 
Lúc trước ta dùng phương thức AddHandler để chuyển giao việc gọi hàm thì giờ đây ta sử 
dụng trực tiếp sự kiện có sẵn của PrintDocument1. Thủ tục này có nội dung như sau: 
 Dim sokytu, sodong As Integer 
 Dim chuoiin As String 
 Dim chuoidinhdang As New StringFormat() 
 'Định nghĩa vùng có thể in ra dựa trên thiết lập trang 
 Dim vungin As New RectangleF(e.MarginBounds.Left, _ 
 e.MarginBounds.Top, e.MarginBounds.Width, _ 
 e.MarginBounds.Height) 
 Dim kichthuoc As New SizeF(e.MarginBounds.Width, _ 
 e.MarginBounds.Height - PrintFont.GetHeight(e.Graphics)) 
 'Nếu in một chuỗi dài, yêu cầu ngắt xuống dòng 
 chuoidinhdang.Trimming = StringTrimming.Word 
 'Tính xem độ dài chuỗi bao nhiêu thì có thể vừa 1 dòng in 
 e.Graphics.MeasureString(StringToPrint, PrintFont, _ 
 kichthuoc, chuoidinhdang, sokytu, sodong) 
 chuoiin = StringToPrint.Substring(0, sokytu) 
 'In chuỗi trên trang hiện hành 
 e.Graphics.DrawString(chuoiin, PrintFont, _ 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 10 - Add: cnt-44-dh, VIMARU 
 Brushes.Black, vungin, chuoidinhdang) 
 'Nếu vẫn còn chuỗi để in 
 If sokytu < StringToPrint.Length Then 
 'Loại bỏ chuỗi đã in xong 
 StringToPrint = StringToPrint.Substring(sokytu) 
 e.HasMorePages = True 
 Else 
 e.HasMorePages = False 
 'Tất cả chuỗi đã in xong, khôi phục lại dữ liệu 
 StringToPrint = rxtDocument.Text 
 End If 
Thủ tục này thực sự tính toán khổ giấy và đẩy dl ra máy in. Trước hết, ta định nghĩa vùng 
in trong một khung hình chữ nhật: 
 Dim vungin As New RectangleF(e.MarginBounds.Left, _ 
 e.MarginBounds.Top, e.MarginBounds.Width, _ 
 e.MarginBounds.Height) 
Vùng in này được thiết lập nhờ các thông số do biến e truyền vào(biến e này tương đương 
với biến ev trong thủ tục PrinText và PrintGraphics trước đây). Thông số mà biến e có 
được là do hộp thoại PrintDialog cung cấp. Tất cả văn bản trong vùng này đều in ra bình 
thường, phần dài hơn sẽ được đẩy ra in dòng khác. Dữ liệu sau đó được đẩy ra máy in bằng 
phương thức DrawString. 
Chạy chương trình: 
Ấn F5 để chạy chương trình. Bạn mở một file text nào đó. 
Chương trình sẽ hiển thị nội dung file vào trong rxtDocument: 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 11 - Add: cnt-44-dh, VIMARU 
Nút Print hiện lên, bạn click vào nó để chương trinh hiện hộp thoại thiết lập trang in: 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 12 - Add: cnt-44-dh, VIMARU 
Tôi chưa kết nối máy in nên danh sách máy in không hiện lên ở đây. Bạn có thể thiết lập 
trang in để truyền thông số vào thủ tục ta đã xây dựng: 
Bạn ấn OK, Print để chương trình in ấn. Ở đây tôi lưu vào file Example For Print.mdi bạn 
có thể xem: 
Như vậy là ta đã hoàn thành việc thiết lập trang in cho việc in văn bản nhiều trang. Tiếp 
sau đây chúng ta sẽ dùng hộp thoại PrintPreviewDialog và PageSetupDialog vào việc thiết 
đặt trang in. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 13 - Add: cnt-44-dh, VIMARU 
3. Sử dụng hộp thoại PrintPreviewDialog và PageSetupDialog 
Chương trình in ấn của chúng ta đã hoàn chỉnh, giờ chúng ta sẽ cải tiến chương trình 
MyFilePrinting cho phép định dạng trang in, chọn khổ giấy và xem trước trang in bằng hộp 
thoại PageSetupDialog và hộp thoại PrintPreviewDialog. 
Bạn mở lại Solution MyFilePrinting ta đã làm và đặt thêm hai điều khiển 
PrintPreViewDialog và PageSetupDialog cùng hai nút nhấn vào form, kết quả như hình: 
Trong đó các điều khiển mới có thuộc tính như sau: 
- Button1: Name – btnPageSetup, Text – “Page Setup”, Enable – False. 
- Button2: Name – btnPreview, Text – “Print Preview”, Enable – False. 
Khi người dùng click vào nút Page Setup thì một hộp thoại cho phép người dùng chọn khổ 
giấy và thiết lập các thông số cho trang in. Khi click vào nút Print Preview thì hộp thoại 
cho phép người dùng xem trước trang in hiện ra. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 14 - Add: cnt-44-dh, VIMARU 
Bây giờ ta sẽ tạo thủ tục btnPageSetup_Click bằng cách double click vào nút Page Setup 
và nhập vào đoạn mã như sau: 
 Try 
 'Nạp các thiết lập và hiển thị hộp thoại PageSetup 
 PageSetupDialog1.PageSettings = PrintPageSetting 
 PageSetupDialog1.ShowDialog() 
 Catch ex As Exception 
 MsgBox(ex.Message) 
 End Try 
Đoạn mã này sẽ tạo ra một hộp thoại Page Setup. Biến PrintPageSetting đã được khai báo 
ở đầu chương trình. Biến PrintPageSetting sẽ nắm giữ các thông số mà hộp thoại 
PageSetupDialog trả về. 
Tiếp theo ta tạo thủ tục btnPreview_Click và nhập đoạn mã như sau: 
 Try 
 'Chỉ định các thiết lập trang in hiện hành 
 PrintDocument1.DefaultPageSettings = PrintPageSetting 
 'Chỉ định tài liệu hiển thị cho hộp thoại PrintPreview 
 StringToPrint = rxtDocument.Text 
 PrintPreviewDialog1.Document = PrintDocument1 
 PrintPreviewDialog1.ShowDialog() 
 Catch ex As Exception 
 MsgBox(ex.Message) 
 End Try 
Thủ tục này sẽ gán biến PrintPageSetting cho thuộc tính DefaultPageSettings của đối 
tượng PrintDocument1, copy văn bản trong ô rxtDocument vào biến StringToPrint và mở 
hộp thoại PrintPreviewDialog1. Thuộc tính Document của hộp thoại PrintPreviewDialog1 
được gán bằng PrintDocument1 để chương trình biết bạn đang cần xem tài liệu nào. 
Sau cùng ta cần enable hai nút nhấn mới thêm là Page Setup và Print Preview bằng hai 
dòng mã sau trong thủ tục btnOpen_Click: 
 btnPageSetup.Enabled = True 
 btnPreview.Enabled = True 
Bạn cũng có thể cho phép người dùng nhập nội dung vào ô RichTextBox bằng cách bổ 
sung thêm thủ tục rxtDocument_TextChanged với nội dung như sau: 
 Private Sub rxtDocument_TextChanged(ByVal sender As Object, _ 
 ByVal e As System.EventArgs) Handles rxtDocument.TextChanged 
 btnPrint.Enabled = True 
 btnPageSetup.Enabled = True 
 btnPreview.Enabled = True 
 End Sub 
Bây giờ chương trình đã hoàn chỉnh, bạn hãy lưu lại tất cả những thay đổi của chương trình 
bằng cách nhấn vào nút Save All trên thanh Standard Bar. 
Chúng ta sẽ tiến hành chạy và kiểm tra chương trình. 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 15 - Add: cnt-44-dh, VIMARU 
Chạy chương trình: 
Bạn chạy chương trình bằng cách nhấn nút F5, bạn hãy thử mở lại file text nào đó hay có 
thể tự nhập nội dung văn bản vào trong ô RichTextBox. 
Bạn nhấn vào nút Page Stup để hiển thị hộp thoại chọn khổ giấy và kích thước trang in: 
Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 
Biên soạn: Phạm Đức Lập - 16 - Add: cnt-44-dh, VIMARU 
Bạn có thể thay đổi kích thước các lề in. Tôi thay như sau: Left – 2.5, ba thông số còn lại là 
1.5. Nhấn OK để lưu lại thông số này. 
Nhấn nút Print Preview để xem trước trang in: 
Bạn có thể xem trong nhiều chế độ. Nhấn Close để đóng cửa sổ này lại. Vậy là chúng ta đã 
hoàn thành việc in ấn cho một tài liệu văn bản đơn giản. 
4. Tổng kết chương 18 
Bạn hãy làm bảng tổng kết những gì đã học trong chương 18. Bạn có thể áp dụng những ví 
dụ trong chương này cho các bài tập cần in ấn sau này của bạn. 

File đính kèm:

  • pdfbai_giang_huong_dan_lap_trinh_vb_net_chuong_18_lam_viec_voi.pdf