一、 PrintDocument類。
打印類PrintDocument類是包含在System.Drawing.Printing名詞空間下的,這個類是用來與打印機進行交流傳輸使用的,它有專門的屬性用來指定應該選擇哪個打印機來打印,還有屬性設置當前打印的紙張默認設置。
使用方式:PrintDocument pdt = new PrintDocument();
二、 PrintDocument類屬性。
類型 屬性 方法 說明
PrinterSittings PrinterSittings 讀/寫 獲取或設置對文檔要進行的打印機。
PageSettings DefaultPageSettings 讀/寫 獲取或設置打印頁設置,這些頁設置用做要打印的所有頁設置。
以上的兩個屬性都是以類對象的形式被封裝到PrintDocument類中,這些屬性要想使用都必須通過new操作符重new出對象來,但是光要這兩個屬性還是不夠的,我們還要使用其他的類來與這兩個類進行配合學習。
例:PrintDocument pdt = new PrintDocument();
pdt.PrinterSettings = new PrinterSettings();
pdt.DefaultPageSettings = new PageSettings();
三、 PrintDocument類事件。
事件 方法 委托 說明
PrintPage OnPrintPage
PrintPageEventHandler 當需要為當前頁打印輸出時發生。
這個事件是等待用戶指定打印時發生的,其實這個事件非常好用,打印時就跟往窗體上繪制一樣,獲得Graphics信息,在使用這個類下的DrawString往頁面上繪制就可以了。
四、 PageSettings類。
這個類是專門用來設置單頁打印信息的,這個信息還得獲取一下pdt.DefaultPageSettings這個屬性。
例:PageSettings ps = pdt.DefaultPageSettings;
當我們獲取完這個之後就可以使用Print()方法進行打印了。
例:
[csharp]
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace Hty
{
class MyForm : Form
{
PrintDocument pdt;
static void Main()
{
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace Hty
{
class MyForm : Form
{
PrintDocument pdt;
static void Main()
{[csharp] view plaincopyprint? Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "打印";
Button bt = new Button();
bt.Parent = this;
bt.Location = new Point(ClientSize.Width/2-bt.Width/2,ClientSize.Height/2-bt.Height/2);
bt.Text = "打印";
bt.Click += new EventHandler(bt_Click);
}
void bt_Click(object sender, EventArgs e)
{
pdt = new PrintDocument();
pdt.PrinterSettings = new PrinterSettings();
pdt.DefaultPageSettings = new PageSettings();
PageSettings page = pdt.DefaultPageSettings;
pdt.PrintPage += new PrintPageEventHandler(pdt_PrintPage);
pdt.Print();
}
void pdt_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics grfx = e.Graphics;
grfx.DrawString("aa", new Font("宋體", 20), Brushes.Black, 0, 0);
}
}
}
Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "打印";
Button bt = new Button();
bt.Parent = this;
bt.Location = new Point(ClientSize.Width/2-bt.Width/2,ClientSize.Height/2-bt.Height/2);
bt.Text = "打印";
bt.Click += new EventHandler(bt_Click);
}
void bt_Click(object sender, EventArgs e)
{
pdt = new PrintDocument();
pdt.PrinterSettings = new PrinterSettings();
pdt.DefaultPageSettings = new PageSettings();
PageSettings page = pdt.DefaultPageSettings;
pdt.PrintPage += new PrintPageEventHandler(pdt_PrintPage);
pdt.Print();
}
void pdt_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics grfx = e.Graphics;
grfx.DrawString("aa", new Font("宋體", 20), Brushes.Black, 0, 0);
}
}
}通過以上的例子我們發現,當我們使用打印的時候跟我們以往在其他的軟件中使用的打印有很大的區別,區別在於他們都有可選擇界面而我們沒有這樣的界面支持,其實我們也可以做到的微軟已經為我們准備好了幾個現成的類了,叫做打印對話框類。
五、 PrintPreviewDialog類。
這個類是微軟專門制作的打印預覽對話框類,如果要想使用這個類就要使用這個類下的Document屬性與我們的pdt對象相關聯才可以。
例:PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdt;
ppd.ShowDialog();
注意:當我們使用了這個類時,我們就不能在使用pdt下的Print打印執行方法了。
例:
[csharp]
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace Hty
{
class MyForm : Form
{
PrintDocument pdt;
static void Main()
{
Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "打印";
Button bt = new Button();
bt.Parent = this;
bt.Location = new Point(ClientSize.Width/2-bt.Width/2,ClientSize.Height/2-bt.Height/2);
bt.Text = "打印";
bt.Click += new EventHandler(bt_Click);
}
void bt_Click(object sender, EventArgs e)
{
pdt = new PrintDocument();
pdt.PrinterSettings = new PrinterSettings();
pdt.DefaultPageSettings = new PageSettings();
PageSettings page = pdt.DefaultPageSettings;
pdt.PrintPage += new PrintPageEventHandler(pdt_PrintPage);
//pdt.Print();
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdt;
ppd.ShowDialog();
}
void pdt_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics grfx = e.Graphics;
grfx.DrawString("aa", new Font("宋體", 20), Brushes.Black, 0, 0);
}
}
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace Hty
{
class MyForm : Form
{
PrintDocument pdt;
static void Main()
{
Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "打印";
Button bt = new Button();
bt.Parent = this;
bt.Location = new Point(ClientSize.Width/2-bt.Width/2,ClientSize.Height/2-bt.Height/2);
bt.Text = "打印";
bt.Click += new EventHandler(bt_Click);
}
void bt_Click(object sender, EventArgs e)
{
pdt = new PrintDocument();
pdt.PrinterSettings = new PrinterSettings();
pdt.DefaultPageSettings = new PageSettings();
PageSettings page = pdt.DefaultPageSettings;
pdt.PrintPage += new PrintPageEventHandler(pdt_PrintPage);
//pdt.Print();
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pdt;
ppd.ShowDialog();
}
void pdt_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics grfx = e.Graphics;
grfx.DrawString("aa", new Font("宋體", 20), Brushes.Black, 0, 0);
}
}
}