C# .Net พิมพ์ข้อมูลของเราเองในรูปแบของเราเองด้วย PrintDocument

หากใครกำลังหาวิธีการเขียนโปรแกรมเพื่อต้องการพิมพ์เอกสารออกเครื่องพิมพ์ด้วย C# .Net แล้วผมรับรองครับว่าหลังจากอ่านบทความนี้จบท่านต้องทำได้แน่นอนครับ สำหรับการพิมพ์งานใน .Net นี้เป็นอะไรที่ง่ายมากเลยครับเพราะว่า .Net ได้เตรียมคลาสที่ชื่อว่า PrintDocument เอาไว้ให้เราได้ใช้งานแล้วครับ ด้วยเจ้าคลาส PrintDocument เราสามารถทำการกำหนดค่า Document Name หรือ Printer Setting หรือแม้กระทั้งสามารถใช้งาน Print Method เพื่อทำการพิมพ์เอกสารได้เลยทีเดียวนะครับ และข้อดีอีกข้อของ PrintDocument คลาสมีอีกอย่างนะครับคือเราสามารถที่จะทำการดักอีเวนต์ต่างๆ ของการ Printได้ครับ เรายังสามารถที่จะใช้งาน Graphics ในการพิมพงานของเราได้อีกด้วยครับ เรามาดูตัวอย่างกันเลยดีกว่าครับ

โดยตัวอย่างที่ผมจะใช้เป็นกรณีศึกษาดังนี้นะครับ ผมจะทำการพิมพ์ข้อมูลที่อยู่ใน DataGridView ทั้งหมดในกระดาษนะครับ เรามาเริ่มกันเลยครับ

สร้างโปรเจ็คก่อนโดยจะให้ชื่อว่า PrintDocumentDemo


ลาก Control มาวางไว้ในฟอรม์ตามที่เราต้องการนะครับในนี้ก็จะมี TextBox, Button, DataGridView


จากนั่นเรามาเริ่มใส่โค็ดกันตอน Form_Load กันก่อนเลยนะครับ เพื่อทำการกำหนดค่าเริ่มต้นให้กับ DataGridView


ต่อมาเรามาเขียนโค๊ดในส่วน เมื่อเรากดปุ่ม Add เพื่อเพิ่มข้อมูลตามนี้นะครับ


ต่อจากนี้เราาเพิ่มโค็ดเมื่อมีการกดปุ่ม Print กันครับ แต่ก่อนที่เราจะเริ่มการเขียนโค๊ดเราต้องรู้อะไรนิดหน่อยเกี่ยวกับ PrintDialog นะครับ PrintDialog คือคลาสที่จะใช้ในการแสดง PrintDialog ขึ้นมาเพื่อทำการ Setting Printer ก่อนที่จะทำการพิมพ์งานของเราไงครับ เอาละเรามาเริ่มดูที่ละส่วนกันเลยนะครับ

เริ่มแรกดูส่วนของโค๊ดเวลาเรากดปุ่ม Print ก่อนนะครับ โค๊ดในส่วนนี้จะมีการเรียกใช้งาน PrintDialog และมีการ Map Event PrintPage นะครับโดยเมื่อไรก็ตามที่เราสั่งพิมพ์ฟั่งก์ชั่น printDoc_PrintPage จะถูกเรียกเองนะครับ


ต่อไปเราจะดูในส่วนว่าเมื่อ printDoc_PrintPage โดนเรียกจะทำงานอย่างไรบ้าง โดยหลักๆ แล้วเราจะทำการแสดงข้อความโดยการกำหนดจุดที่ต้องการให้แสดงข้อความนะครับ จริงๆ แล้วเราสามารถทำอะไรกับกระดาษที่เราจะพิมพ์ก็ได้นะครับ เช่น วาดรูป วาดสามเหลี่ยม สี่เหลี่ยม ...... อะไรก็ได้โดยเราจะใช้งาน Graphics คลาสในการวาดทั้งรูปและข้อความนะครับ


เสร็จแล้วเมื่อเราสั่งรันโปรแกรมหน้าต่างก็จะได้ประมาณนี้นะครับ


เมื่อคลิ๊กปุ่ม Print ก็จะมี Print Dialog ขึ้นมาเพื่อให้เรา Setting Print ที่เราต้องการ


แล้วผลลัพธ์ของเราก็จะได้ประมาณนี้นะครับ


เพียงเท่านี้เราก็สามารถพิมพ์งานในรุปแบบที่เราต้องการได้แล้วละครับ ไม่ได้ยากอะไรเลย
ถ้าต้องการโค๊ดของโปรเจ๊ดก็ตามไปที่นี้เลยครับ คลิ๊ก