c# 打印和报表
使用打印方法时,要先引用命名空间: Using System.Drawing.Pringing
PrintDocument类的重要属性和方法:
属性:
DocumentName 设置打印文档时要显示的文档名(在打印任务队列中显示)
DefaultPageSettings 打印页面设置
PrinterSettings 打印机设置
方法:
print() 进行打印
事件:
PrintPage 打印时触发的事件,在此事件对应的方法里用Grapics对象设置打印内容
例:简单打印出label1.text的内容
private void button1_Click(object sender, EventArgs e)
{
//实例化打印对象
PrintDocument printdoc = new PrintDocument();
//定义打印对象的事件
printdoc.PrintPage += new PrintPageEventHandler(printdoc_PrintPage);
//开始打印
printdoc.Print();
}
void printdoc_PrintPage(object sender, PrintPageEventArgs e)
{
//设置字体
Font f=new Font("宋体",20);
//控制打印是什么内容 label1.text是打印内容 f是字体对象 brushes是填充颜色 10,10是打印到纸上的起始坐标
e.Graphics.DrawString(label1.Text,f,Brushes.Black,10,10);
}
e.Graphics.DrawString(label1.Text,f,Brushes.Black,10,10); 我们现在来看一下前面这条语句,e.Graphics中的e对象是PrintPageEventArgs 类型的对象,PrintPageEventAgrs参数是专门为PrintPage事件提供数据的对象,是一个系统封装好并传递给你处理的对象。我们已经看到了,这个对象里面有一个Graphics属性,通过这个属性就可以为打印机提供打印内容。除此之外,PrintPageEventArgs参数里还有其他几个常用的重要属性,归纳起来如下:
cancel 设置是否取消打印作业,true为取消打印
HasMorePages 是否打印附加页,true为继续打印下一页,false为只打印当前页
MarginBounds 获取表示边距以内页面部分的矩形区域,返回Rectangle对象
PageBounds 获取表示页面全部区域的矩形区域,返回Rectangle对象
Pagesettings 获取当前页的页设置对象,返回pagesettings对象
PageBounds 可以想象成画图的纸张 MarginBounds想象成画图纸张除掉边缘的作图区域 HasMorePages就是告诉打印机,你是否还有下一页要打印,如果没有就设置为False
例:创建一个有打印功能的程序
1.加入控件 PrintDocument 加入打印功能
e.Graphics.DrawString("旺财你好",new Font("宋体",20),brushes.black,10,10);
2.加入控件 PagePreviewDialog 加入预览功能 在document属性加入printDocument 在button中加入printpreviewdialog.showdialog();
3.加入pageSetUpDialog 控件和PrintDialog控件,然后设置这两个控件Document属性为printDocument
4.添加一个打印按钮,在按钮中加入如下代码
//打印机设置
if (printDialog.ShowDialog()==DialogResult.OK)
{
//页面设置
if (pageSetupDialog.ShowDialog()==DialogResult.OK)
{
//开始打印
printDocument.Print();
}
}