二、
就这么简单啦,我们看看下面的吧,还有更重磅的东东呢?关于打印的。
打印预浏及打印 打印是我们在windows编程中常要用到的功能,在以前都是很麻烦工作,但在Microsoft .net Framework中打印是以组件提供给我们使用,不过还是点麻烦的,所以就专门写出来,供大家参改。
一, 在.net环境中,说到打印,就不能不说PrintDocumet这个类,PrintDocument属于System.Drawing.Printing这个名字空间,PrintDocument这个类是实现打印的核心代码。 如果要实现打印,就必需首先构造PrintDocument对象添加打印事件, printDocument.PrintPage+=new PrintPageEventHandler(this.printDocument_PrintPage) 打印其实也是调用Graphics类的方法进行画图,下面这代码是根据MSDN上提供的例程改写的。MSDN打印例程地址: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp ,有兴趣的网友可以参改一下。 下面是我改写的printDocument_PrintPage:
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { float linesPerPage=0;//页面的行号 float yPos=0;//打印字符串的纵向位置 int count=0;//行计数器 float leftMargin =e.MarginBounds.Left;//左边距 float topMargin=e.MarginBounds.Top;//上边距 string line=null;//行字符串 Color clr=richTextBox1.SelectionColor;//当前的打印颜色,在我这个程序没有实现不同颜色打印 SolidBrush b =new SolidBrush(clr);//刷子 fnt=richTextBox1.SelectionFont;//当前的打印字体 linesPerPage=e.MarginBounds.Height/fnt.GetHeight(e.Graphics);//每页可打印的行数 file://逐行循行打印一页 while(count { yPos=topMargin+(count*fnt.GetHeight(e.Graphics)); e.Graphics.DrawString(line,fnt,b,leftMargin,yPos,new StringFormat()); count++; } file://如果该页打印完成而line不为空说明还有没完成的页面,发出下一次的打印事件, file://在下一次的打印中lineReader会自动读取上次没有打印完的内容。lineReader可以记录当前读取的位置 if(line!=null) e.HasMorePages=true; else e.HasMorePages=false; }在这里可以完成整个打印任务。把printDocument_PrintPage构造好后,就可以打印和打印预浏。
二、打印预浏对话框(PrintPreviewDialog) 打印预浏控件是用来显示一个打印文档在打印后的效果。在打印预浏对话框中包含有,打印、缩放、单页或多页、关闭等按钮。
打印预浏对话框没有太多的属性,最后通过ShowDialog()调用。上面的实现代码如下:
private void printPreviewBTN_Click(object sender, System.EventArgs e) [Page]{ lineReader = new StringReader(richTextBox1.Text); try { PrintPreviewDialog printPreviewDialog1=new PrintPreviewDialog(); printPreviewDialog1.Document=printDocument; printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D; printPreviewDialog1.ShowDialog(this); } catch(Exception excep) { MessageBox.Show(excep.Message, /"打印出错/", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }很简单的,只要你把PrintDocument_PrintPage()写好了,这里就很容易了。
三、打印对话框(PrintDialog) 1、打印对话框(PrintDialog)只要有以下属性:
AllowPrintToFile 禁止或使用/"打印到文件/"复选框 AllowSelection 禁止或使用/"选定内容/"单选框 AllowSomePages 禁止或使用/"页/"单选按钮 Document 从中获取打印机设置的PrintDocument PrintToFile 打印到文件/"复选框是否选中 ShowHelp 控制是否显示/"帮助/"按钮 ShowNetWork 控制是否显示/"网络/"按钮2、
3、用如下代码来实现:
private void printDialogBTN_Click(object sender, System.EventArgs e) { PrintDialog printDialog=new PrintDialog(); printDialog.Document=printDocument; if(printDialog.ShowDialog()!=DialogResult.Cancel) { try { printDocument.Print(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } }到此,所有的对话框都讲完了。 上述对话框,完全可以在vs.net的IDE环境中完成。
