在Windows窗体应用程序中打印和制作报表.doc_第1页
在Windows窗体应用程序中打印和制作报表.doc_第2页
在Windows窗体应用程序中打印和制作报表.doc_第3页
在Windows窗体应用程序中打印和制作报表.doc_第4页
在Windows窗体应用程序中打印和制作报表.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 在Windows窗体应用程序中打印和制作报表课堂练习在Windows窗体应用程序中添加打印支持 将PrintDocument控件添加到应用程序中3PrintDocument类为应用程序提供了什么功能?答:PrintDocument类使Windows 窗体应用程序能够对打印进程进行初始化(通过调用PrintDocument.Print方法),并且提供对打印机和页面设置的访问,这些页面设置可以控制打印文档的显示效果。 创建自定义的PrintPage过程5PrintDocument.PrintPage事件的目的是什么?答:使用对PrintDocument.PrintPage事件进行处理的过程来分别构造打印文档的每个页面,控制创建的打印文档页面的数量,为打印文档的每个页面调整页面设置以及在需要时取消打印作业。使用PrintPageEventArgs 参数的Graphics对象来分别构造每页的页面内容。通过使用PrintDocument.Print 方法将Graphics对象传递给打印设备。 11为什么应用程序不能显示多页呢?答:因为在默认的情况下PrintPageEventArgs对象的HasMorePages属性为False。当打印作业包含多个文档页面时,必须为打印循环开发程序逻辑。课堂练习:使用PrintPreviewDialog控件 在应用程序中添加PrintPreviewDialog控件3PrintPreviewDialog控件出现在“视图设计器”窗口的什么位置?答:PrintPreviewDialog控件将被添加到“视图设计器”窗口底部的组件托盘中。 创建显示打印文档的PrintPreview过程6有没有方法能够使得对话框窗口比默认的大一些。答:有。可以使用对话框的WindowState属性将窗口的默认状态设为Maximized。 查看其它一些显示打印文档的方法4什么时候使用PrintPreviewControl显示打印文档而不是使用PrintPreviewDialog?答:当需要自定义的应用程序的打印预览功能时,可使用PrintPreviewControl来显示文档。课堂练习:使用PageSetupDialog 控件 在应用程序中添加PageSetupDialog控件3PageSetupDialog控件出现在设计视图窗口的什么位置?答:PageSetupDialog控件被添加到设计视图窗口底部的组件托盘中。 创建显示页面设置的PageSetup过程5运行PrintPreviewDialog应用程序,使用菜单或按钮来显示Page Setup对话框。为什么出现错误?答:PageSetupDialog控件需要提供表示文档页面设置的PageSettings对象。9显示打印文档的预览。为什么新的设置没有生效?答:尽管PageSetupDialog自动地将新设置放到MyPageSettings对象中,但仍然必须将页面设置赋给PrintDocument对象。 查看PageSetupDialog控件的其它成员3如何使用PageSetupDialog的其它成员?答:可以使用其它的成员来自定义PageSetupDialog以及控制用户可以选择的设置范围。课堂练习:使用PrintDialog控件 将PrintDialog控件添加到应用程序中3PrintDialog 控件出现在设计视图窗口的什么位置?答:PrintDialog控件将被添加到设计视图窗口底部的组件托盘中。 创建显示Print对话框的PrintDoc过程5运行PrintDialog应用程序,然后单击用来显示“打印”对话框的菜单项或按钮。为什么“打印”对话框没有打开?答:在显示PrintDialog之前必须对PrintDialog.Document属性进行设置。 使用PrintDocument.Print方法打印文档3文档为什么没有被打印?答:PrintDialog并没有调用PrintDocument.Print方法必须自己添加代码。然而,这意味着必须知道用户点击了哪个对话框按钮。可以使用DialogResult对象进行确认。 课堂练习:使用GDI+构造打印文档内容 创建钢笔、画笔和字体9输入的一些代码语句是否需要对Drawing2D命名空间的引用?答:是的。用来设置DashStyle和DashCap的代码语句使用Drawing2D命名空间所提供的枚举。 在页面上测量和定位文本5如何绘制右对齐文本?答:可以通过测量文本字符串和建立水平位置绘制右对齐文本,所建的水平位置等于定义的右端位置与文本字符串的宽度的差。习题答案1. 以下那个Print方法可以打印10页a)public class myprintprivate int pages;public void Print()PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);pages=1;pd.Print();private void pd_PrintPage(object sender, PrintPageEventArgs ev) ev.Graphics.DrawString(this is page+pages.ToString(),new Font(Arial,10),System.Drawing.Brushes.Black,10,10);pages+;if (pages =10) ev.HasMorePages = true;else ev.HasMorePages = false;b)public class myprintprivate int pages;public void Print()PrintDocument pd = new PrintDocument(); pages=1;pd.Print();private void pd_PrintPage(object sender, PrintPageEventArgs ev) ev.Graphics.DrawString(this is page+pages.ToString(),new Font(Arial,10),System.Drawing.Brushes.Black,10,10);pages+;if (pages =10) ev.HasMorePages = true;else ev.HasMorePages = false;c)public class myprintprivate int pages;public void Print()PrintDocument pd = new PrintDocument(); pages=1;pd.Print();pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);private void pd_PrintPage(object sender, PrintPageEventArgs ev) ev.Graphics.DrawString(this is page+pages.ToString(),new Font(Arial,10),System.Drawing.Brushes.Black,10,10);pages+;if (pages =10) ev.HasMorePages = true;else ev.HasMorePages = false;d)public class myprintprivate int pages;public void Print()PrintDocument pd = new PrintDocument(); pd.Print();private void pd_PrintPage(object sender, PrintPageEventArgs ev) ev.Graphics.DrawString(this is page+pages.ToString(),new Font(Arial,10),System.Drawing.Brushes.Black,10,10);pages+;if (pages =10) ev.HasMorePages = true;else ev.HasMorePages = false;答:A2. 下面代码是一个使用PrintPreviewDialog控件来显示文档打印预览a)printPreviewDialog1.PrintPreviewControl.StartPage = 0;printPreviewDialog1.Document = printDocument1;printPreviewDialog1.ShowDialog();printDocument1.Print();b)printDocument1.Print();printPreviewDialog1.PrintPreviewControl.StartPage = 0;printPreviewDialog1.Document = printDocument1;printPreviewDialog1.ShowDialog();c)printPreviewDialog1.PrintPreviewControl.StartPage = 0;printPreviewDialog1.ShowDialog();printPreviewDialog1.Document = printDocument1;printDocument1.Print();d)printDocument1.Print();printPreviewDialog1.PrintPreviewControl.StartPage = 0;printPreviewDialog1.ShowDialog();printPreviewDialog1.Document = printDocument1;答:A3. 在printDocument1打印之前显示一个page setup dialog已接受某些打印设置.a)PageSetupDialog pageSetupDialog1=new PageSetupDialog ();pageSetupDialog1.Document = printDocument1;pageSetupDialog1.ShowDialog();printDocument1.Print();b)PageSetupDialog pageSetupDialog1=new PageSetupDialog ();pageSetupDialog1.PageSettings= printDocument1;pageSetupDialog1.ShowDialog();printDocument1.Print();c)PageSetupDialog pageSetupDialog1=new PageSetupDialog ();pageSetupDialog1.Document = printDocument1;printDocument1.Print();pageSetupDialog1.ShowDialog();d)PageSetupDialog pageSetupDialog1=new PageSetupDialog ();pageSetupDialog1.PageSettings= printDocument1;printDocument1.Print();pageSetupDialog1.ShowDialog();答:A4. 在PrintDocument的PrintPage事件中(private void pd_PrintPage(object sender, PrintPageEventArgs ev) ), 如何取得可以打印的文本行数(font1 是使用的字体)。a) int linesPerPage; linesPerPage =(int)( ev.MarginBounds.Height / font1.GetHeight(ev.Graphics);b) int linesPerPage; linesPerPage = ev.MarginBounds.Height / font1.GetHeight(ev.Graphics);c) int linesPerPage; linesPerPage =(int)( ev.Graphics.Height / font1.GetHeight(ev.Graphics);a) int linesPerPage; linesPerPage =ev.Graphics.Height / font1.GetHeight(ev.Graphics);答:A5. 列出在Visual Studio .NET打印简单文本文件所涉及的任务。答:使用StreamReader 对象来读取文本文件的内容,然后将StreamReader中的内容逐行绘制到PrintDocument.PrintPage 事件处理程序中的Graphics对象中。Graphics对象是通过PrintPageEventArgs类提供的,它是PrintPage事件处理程序的参数。6. 使用什么属性来捕获用户在对话框中的输入?答:使用父窗体的DialogResult属性来捕获所发生的动作来关闭对话框。例如,可以使用DialogResult属性来确定是通过点击“确定”还是点击“取消”来关闭PrintDialog对话框的。7. 在使用G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论