在Winform中的打印主要可以通過三種方式來實現(xiàn):一種是使用Winform提供的類,另一種是使用控件,還有一種就是利用水晶報表的打印。
打印控件主要優(yōu)勢是方便快捷,一般應(yīng)用于簡單、固定、單調(diào)的模板打印,其主要常用控件有:
(1) PrintDocument:是一個可用于設(shè)置屬性來描述有關(guān)打印的信息,并且可用于調(diào)用方法Print()或通過事件PrintPage來打印文檔的組件。
(2) PrintDialog:允許用戶選擇打印機(jī)并指定文檔中要打印的部分。
(3) PrintPreviewDialog:此控件是一個打印預(yù)覽對話框,用于顯示文檔的打印效果。該控件包含用于打印、放大、顯示一頁或多頁以及關(guān)閉對話框的按鈕。
(4) PageSetupDialog:主要用來設(shè)置頁面大小,頁邊距等。
------------------------------------------------------
建個winform工程,拖如上四個控件,再拖三個按鈕
public Form1()
{
InitializeComponent();
this.printDialog1.Document = this.printDocument1;//必要的
this.printPreviewDialog1.Document = this.printDocument1;
this.pageSetupDialog1.Document = this.printDocument1;
}
private void button3_Click(object sender, EventArgs e)
{//打印
if (this.printDialog1.ShowDialog() == DialogResult.OK)
this.printDocument1.Print();
}
private void button1_Click(object sender, EventArgs e)
{//打印預(yù)覽
this.printPreviewDialog1.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{//打印設(shè)置
this.pageSetupDialog1.ShowDialog();
}
但是如果想打印一張表的數(shù)據(jù),我建義你使用水晶報表,這樣就方便得多.
水晶報表(Crystal Report)是業(yè)內(nèi)最專業(yè)、功能最強(qiáng)的報表系統(tǒng),它除了強(qiáng)大的報表功能外,最大的優(yōu)勢是實現(xiàn)了與絕大多數(shù)流行開發(fā)工具的集成和接口。在VS.Net平臺 做過報表開發(fā)的程序員,一定都對水晶報表強(qiáng)大、高效、集成等特性留下了深刻印象。除了開發(fā)新程序外,在工作中我們常需要接觸到很多較早的軟件系統(tǒng)報表功能升級的需求,如果能結(jié)合水晶報表這一強(qiáng)大的工具,往往能事半功倍。
因為有些打印效果需要分類匯總、規(guī)范的頁面格式、預(yù)覽等,而水晶報表都能方便高效的實現(xiàn)。如打印藥品入庫清單,需要用到表格的樣式,且對總消費(fèi)求和;處方箋的打印也需要繪制規(guī)范的格式,同時還可以利用自帶的公式進(jìn)行相應(yīng)的數(shù)據(jù)加工。
其實現(xiàn)過程:首先建立一個DataSet.xsd文件,在上面創(chuàng)建需要的Table模板,table中的列都將是水晶報表要用到的;其次通過報表專家進(jìn)行水晶報表的創(chuàng)建,包括需要顯示的字段,需要匯總求和的數(shù)據(jù),基本樣式等都可逐步實現(xiàn),完成后也可做相應(yīng)的樣式和數(shù)據(jù)修改;最后把數(shù)據(jù)庫里的數(shù)據(jù)查詢出來,賦給水晶報表數(shù)據(jù)源,通過CrystalReportView控件展示給用戶。通過自帶的打印,導(dǎo)出等工具,可以方便的進(jìn)行操作。