在Windows窗体应用程序中打印和制作报表精.docx
- 文档编号:28416368
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:11
- 大小:17.54KB
在Windows窗体应用程序中打印和制作报表精.docx
《在Windows窗体应用程序中打印和制作报表精.docx》由会员分享,可在线阅读,更多相关《在Windows窗体应用程序中打印和制作报表精.docx(11页珍藏版)》请在冰豆网上搜索。
在Windows窗体应用程序中打印和制作报表精
在Windows窗体应用程序中打印和制作报表(精)
第6章在Windows窗体应用程序中打印和制作报表
课堂练习 在Windows窗体应用程序中添加打印支持
将PrintDocument控件添加到应用程序中
3.PrintDocument类为应用程序提供了什么功能?
答:
PrintDocument类使Windows窗体应用程序能够对打印进程进行初始化(通过调用PrintDocument.Print方法),并且提供对打印机和页面设置的访问,这些页面设置可以控制打印文档的显示效果。
创建自定义的PrintPage过程
5.PrintDocument.PrintPage事件的目的是什么?
答:
使用对PrintDocument.PrintPage事件进行处理的过程来分别构造打印文档的每个页面,控制创建的打印文档页面的数量,为打印文档的每个页面调整页面设置以及在需要时取消打印作业。
使用PrintPageEventArgs参数的Graphics对象来分别构造每页的页面内容。
通过使用PrintDocument.Print方法将Graphics对象传递给打印设备。
11.为什么应用程序不能显示多页呢?
答:
因为在默认的情况下PrintPageEventArgs对象的HasMorePages属性为False。
当打印作业包含多个文档页面时,必须为打印循环开发程序逻辑。
课堂练习:
使用PrintPreviewDialog控件
在应用程序中添加PrintPreviewDialog控件
3.PrintPreviewDialog控件出现在“视图设计器”窗口的什么位置?
答:
PrintPreviewDialog控件将被添加到“视图设计器”窗口底部的组件托盘中。
创建显示打印文档的PrintPreview过程
6.有没有方法能够使得对话框窗口比默认的大一些。
答:
有。
可以使用对话框的WindowState属性将窗口的默认状态设为Maximized。
查看其它一些显示打印文档的方法
4.什么时候使用PrintPreviewControl显示打印文档而不是使用PrintPreviewDialog?
答:
当需要自定义的应用程序的打印预览功能时,可使用PrintPreviewControl来显示文档。
课堂练习:
使用PageSetupDialog控件
在应用程序中添加PageSetupDialog控件
3.PageSetupDialog控件出现在设计视图窗口的什么位置?
答:
PageSetupDialog控件被添加到设计视图窗口底部的组件托盘中。
创建显示页面设置的PageSetup过程
5.运行PrintPreviewDialog应用程序,使用菜单或按钮来显示PageSetup对话框。
为什么出现错误?
答:
PageSetupDialog控件需要提供表示文档页面设置的PageSettings对象。
9.显示打印文档的预览。
为什么新的设置没有生效?
答:
尽管PageSetupDialog自动地将新设置放到MyPageSettings对象中,但仍然必须将页面设置赋给PrintDocument对象。
查看PageSetupDialog控件的其它成员
3.如何使用PageSetupDialog的其它成员?
答:
可以使用其它的成员来自定义PageSetupDialog以及控制用户可以选择的设置范围。
课堂练习:
使用PrintDialog控件
将PrintDialog控件添加到应用程序中
3.PrintDialog控件出现在设计视图窗口的什么位置?
答:
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)
publicclassmyprint
{
privateintpages;
publicvoidPrint()
{
PrintDocumentpd=newPrintDocument();
pd.PrintPage+=newPrintPageEventHandler(pd_PrintPage);
pages=1;
pd.Print();
}
privatevoidpd_PrintPage(objectsender,PrintPageEventArgsev)
{
ev.Graphics.DrawString("thisispage"+pages.ToString(),newFont("Arial",10),System.Drawing.Brushes.Black,10,10);
pages++;
if(pages<=10)
ev.HasMorePages=true;
else
ev.HasMorePages=false;
}
}
b)
publicclassmyprint
{
privateintpages;
publicvoidPrint()
{
PrintDocumentpd=newPrintDocument();
pages=1;
pd.Print();
}
privatevoidpd_PrintPage(objectsender,PrintPageEventArgsev)
{
ev.Graphics.DrawString("thisispage"+pages.ToString(),newFont("Arial",10),System.Drawing.Brushes.Black,10,10);
pages++;
if(pages<=10)
ev.HasMorePages=true;
else
ev.HasMorePages=false;
}
}
c)
publicclassmyprint
{
privateintpages;
publicvoidPrint()
{
PrintDocumentpd=newPrintDocument();
pages=1;
pd.Print();
pd.PrintPage+=newPrintPageEventHandler(pd_PrintPage);
}
privatevoidpd_PrintPage(objectsender,PrintPageEventArgsev)
{
ev.Graphics.DrawString("thisispage"+pages.ToString(),newFont("Arial",10),System.Drawing.Brushes.Black,10,10);
pages++;
if(pages<=10)
ev.HasMorePages=true;
else
ev.HasMorePages=false;
}
}
d)
publicclassmyprint
{
privateintpages;
publicvoidPrint()
{
PrintDocumentpd=newPrintDocument();
pd.Print();
}
privatevoidpd_PrintPage(objectsender,PrintPageEventArgsev)
{
ev.Graphics.DrawString("thisispage"+pages.ToString(),newFont("Arial",10),System.Drawing.Brushes.Black,10,10);
pages++;
if(pages<=10)
ev.HasMorePages=true;
else
ev.HasMorePages=false;
}
}
答:
A
2.下面代码是一个使用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;
答:
A
3.在printDocument1打印之前显示一个pagesetupdialog已接受某些打印设置.
a)
PageSetupDialogpageSetupDialog1=newPageSetupDialog();
pageSetupDialog1.Document=printDocument1;
pageSetupDialog1.ShowDialog();
printDocument1.Print();
b)
PageSetupDialogpageSetupDialog1=newPageSetupDialog();
pageSetupDialog1.PageSettings=printDocument1;
pageSetupDialog1.ShowDialog();
printDocument1.Print();
c)
PageSetupDialogpageSetupDialog1=newPageSetupDialog();
pageSetupDialog1.Document=printDocument1;
printDocument1.Print();
pageSetupDialog1.ShowDialog();
d)
PageSetupDialogpageSetupDialog1=newPageSetupDialog();
pageSetupDialog1.PageSettings=printDocument1;
printDocument1.Print();
pageSetupDialog1.ShowDialog();
答:
A
4.在PrintDocument的PrintPage事件中(privatevoidpd_PrintPage(objectsender,PrintPageEventArgsev)),如何取得可以打印的文本行数(font1是使用的字体)。
a)
intlinesPerPage;
linesPerPage=(int)(ev.MarginBounds.Height/font1.GetHeight(ev.Graphics));
b)
intlinesPerPage;
linesPerPage=ev.MarginBounds.Height/font1.GetHeight(ev.Graphics);
c)
intlinesPerPage;
linesPerPage=(int)(ev.Graphics.Height/font1.GetHeight(ev.Graphics));
a)
intlinesPerPage;
linesPerPage=ev.Graphics.Height/font1.GetHeight(ev.Graphics);
答:
A
5.列出在VisualStudio.NET打印简单文本文件所涉及的任务。
答:
使用StreamReader对象来读取文本文件的内容,然后将StreamReader中的内容逐行绘制到PrintDocument.PrintPage事件处理程序中的Graphics对象中。
Graphics对象是通过PrintPageEventArgs类提供的,它是PrintPage事件处理程序的参数。
6.使用什么属性来捕获用户在对话框中的输入?
答:
使用父窗体的DialogResult属性来捕获所发生的动作来关闭对话框。
例如,可以使用DialogResult属性来确定是通过点击“确定”还是点击“取消”来关闭PrintDialog对话框的。
7.在使用GDI+打印时,Graphics对象的作用是什么?
答:
Graphics对象充当画布,GDI+方法在上面进行绘制。
8.使用GDI+的哪些方法来绘制文本和图形?
答:
使用诸如DrawRectangle和FillEllipse方法来绘制二维矢量图。
DrawString方法用来绘制文本。
9.下面的代码创建了哪种对象?
PenmyPen=newPen(Color.Black);
Graphicsg=this.CreateGraphics();
g.DrawEllipse(myPen,20,30,10,50);
答:
通过使用默认宽度为1象素(默认的绘图单位)的实心黑色钢笔,VisualC#.NET代码会产生一个椭圆的二维矢量轮廓图形。
10.列出使用CrystalReports的一些好处。
答:
CrystalReports提供一种快速、简单的方法来生成专业外观的报表。
11.列出使用CrystalReports创建报表所涉及的步骤。
答:
建立与数据的数据库连接,在项目中添加CrystalReport(.rpt文件),使用CrystalReport库配置报表,在窗体中添加CrystalReportViewer控件,声明报表对象,然后将报表的实例(.rpt)赋值给该对象,使用报表对象的SetDataSource属性用数据填充该对象,然后将报表对象赋值给CrystalReportViewer的ReportSource属性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 窗体 应用程序 打印 制作 报表