winform 自帶打印控件(轉)


在Winform中的打印主要可以通過三種方式來實現:一種是使用Winform提供的類,另一種是使用控件,還有一種就是利用水晶報表的打印。
打印控件主要優勢是方便快捷,一般應用於簡單、固定、單調的模板打印,其主要常用控件有:
(1) PrintDocument:是一個可用於設置屬性來描述有關打印的信息,並且可用於調用方法Print()或通過事件PrintPage來打印文檔的組件。
(2) PrintDialog:允許用戶選擇打印機並指定文檔中要打印的部分。
(3) PrintPreviewDialog:此控件是一個打印預覽對話框,用於顯示文檔的打印效果。該控件包含用於打印、放大、顯示一頁或多頁以及關閉對話框的按鈕。
(4) PageSetupDialog:主要用來設置頁面大小,頁邊距等。
------------------------------------------------------
建個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)
{//打印預覽
this.printPreviewDialog1.ShowDialog();
}

private void button2_Click(object sender, EventArgs e)
{//打印設置
this.pageSetupDialog1.ShowDialog();
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{//雙擊printDocument控件, 這才是真正開始干活的,在這里面寫你想要打印信息
Font font = new Font("Tahoma", 12, FontStyle.Underline);//設置畫筆
Brush bru = Brushes.Blue;
Pen pen = new Pen(bru);
pen.Width = 5;
//設置各邊距
int nLeft = this.pageSetupDialog1.PageSettings.Margins.Left;
int nTop = this.pageSetupDialog1.PageSettings.Margins.Top;
int nRight = this.pageSetupDialog1.PageSettings.Margins.Right;
int nBottom = this.pageSetupDialog1.PageSettings.Margins.Bottom;
int nWidth = this.pageSetupDialog1.PageSettings.PaperSize.Width-nRight-nLeft;
int nHeight = this.pageSetupDialog1.PageSettings.PaperSize.Height-nTop-nBottom;
//打印各邊距
e.Graphics.DrawLine(pen, nLeft, nTop, nLeft, nTop + nHeight);
e.Graphics.DrawLine(pen, nLeft+nWidth, nTop, nLeft+nWidth, nTop + nHeight);
e.Graphics.DrawLine(pen, nLeft, nTop, nLeft+nWidth, nTop);
e.Graphics.DrawLine(pen, nLeft, nTop+nHeight, nLeft + nWidth, nTop+nHeight);
//在離左邊距20,右邊距20的位置打印
e.Graphics.DrawString("haha xixi", font, bru, nLeft+20, nTop+20);//如果要打印datagridView在這里遍歷便可
}

但是如果想打印一張表的數據,我建義你使用水晶報表,這樣就方便得多.
水晶報表(Crystal Report)是業內最專業、功能最強的報表系統,它除了強大的報表功能外,最大的優勢是實現了與絕大多數流行開發工具的集成和接口。在VS.Net平台 做過報表開發的程序員,一定都對水晶報表強大、高效、集成等特性留下了深刻印象。除了開發新程序外,在工作中我們常需要接觸到很多較早的軟件系統報表功能升級的需求,如果能結合水晶報表這一強大的工具,往往能事半功倍。
因為有些打印效果需要分類匯總、規范的頁面格式、預覽等,而水晶報表都能方便高效的實現。如打印葯品入庫清單,需要用到表格的樣式,且對總消費求和;處方箋的打印也需要繪制規范的格式,同時還可以利用自帶的公式進行相應的數據加工。
其實現過程:首先建立一個DataSet.xsd文件,在上面創建需要的Table模板,table中的列都將是水晶報表要用到的;其次通過報表專家進行水晶報表的創建,包括需要顯示的字段,需要匯總求和的數據,基本樣式等都可逐步實現,完成后也可做相應的樣式和數據修改;最后把數據庫里的數據查詢出來,賦給水晶報表數據源,通過CrystalReportView控件展示給用戶。通過自帶的打印,導出等工具,可以方便的進行操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM