昨天公司要打單子而不是以前的手寫
爲了實現這樣的功能上網搜索了一下
http://blog.csdn.net/fwj380891124/article/details/8071801
這篇文章來入門,不過發現無法實現套打功能,把所有的信息都打出來了
對代碼進行了一定的調整,並且可以預覽,去除了預覽頁面的打印功能
下面是我寫的程序
1. 新建立一個WINFORM項目
2. 添加一個panel 做爲要打印的內容展示,背景設置爲上面的圖片
3. 增加printDocument1,printDialog1,printPreviewDialog1,pageSetupDialog1 Document設置爲
4. 增加三個按鈕,及幾個textbox
private voidbutton1_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.ShowDialog();
}
privatevoid button2_Click(objectsender,EventArgs e)
{
//注意指定其Document(獲取或設置要預覽的文檔)屬性
this.printPreviewDialog1.Document=this.printDocument1;
//ShowDialog方法:將窗體顯示爲模式對話框,並將當前活動窗口設置爲它的所有者
this.printPreviewDialog1.PrintPreviewControl.Zoom= 1.0;
//將打印按鈕重新設置
ToolStriptool = this.printPreviewDialog1.Controls["toolStrip1"]asToolStrip;
if(tool != null)
{
intindexPrint = tool.Items.IndexOfKey("printToolStripButton");
if(indexPrint != -1)
{
tool.Items[indexPrint].Visible = false;
}
}
this.printPreviewDialog1.ShowDialog();
}
privatevoid button3_Click(objectsender,EventArgs e)
{
PrintDialogpdia = new PrintDialog();
PrintDocumentpdoc =newPrintDocument();
pdoc.PrintPage += newPrintPageEventHandler(printDocument_PrintPage);
if(pdia.ShowDialog() ==DialogResult.OK)
{
pdoc.Print();
}
}
privatevoid printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Fontfont = new Font("宋體", 12);
Brushbru = Brushes.Black;
Imagebitmap = new Bitmap(panel1.BackgroundImage.Width,panel1.BackgroundImage.Height);
Graphicsg = e.Graphics; //先建立畫布
g.DrawImage(bitmap, 0, 0);
intx = 0;//調整位置信息
inty = 0;
foreach(Control iteminpanel1.Controls)
{
if(item is TextBox)
{
Controltx = (itemasControl);
g.DrawString(tx.Text,font,bru, tx.Left + x, tx.Top + y);
}
}
}
privatevoid printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Fontfont = new Font("宋體", 12);
Brushbru = Brushes.Black;
Graphicsg = e.Graphics; //先建立畫布
intx = 0;
inty = 0;
g.DrawImage(panel1.BackgroundImage,0, 0);
foreach(Control iteminpanel1.Controls)
{
if(item is TextBox)
{
Controltx = (itemasControl);
g.DrawString(tx.Text, font,bru, tx.Left + x, tx.Top + y);
}
}
}
爲了方便大家改寫可去下載項目文件及源代碼