C# 打印两个纠结的问题

lanyigoo 2011-03-28 03:20:35
1、printPreviewControl如何做到分页预览。
2、printPreviewControl如何去掉“正在生成预览”的对话框。
...全文
337 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
yys863 2011-03-31
  • 打赏
  • 举报
回复
这个打印我刚做过,分页很简单,
第二问题我也想知道。。。试了各种方法都去不掉



lanyigoo 2011-03-31
  • 打赏
  • 举报
回复
在 printPreviewControl1.Rows = 1
printPreviewControl1.Column=1 的情况下 printPreviewControl1.StartPage = pageNum 才起作用.如果是这样子的分页我就不在这问了,客户要是在多页预览的情况下,直接定位到某一页查看.
PS:第二个问题有没有人提个思路什么的
freewings 2011-03-31
  • 打赏
  • 举报
回复
最近正要用到 顶下主机~~~~~~
david_tao 2011-03-31
  • 打赏
  • 举报
回复
默认预览不是自动多页吗
starrysky_net 2011-03-31
  • 打赏
  • 举报
回复
PrintPreviewDialog 打印预览对话框
PageSettings 打印设置对话框/A5/A4 配合PrintDialog使用
PrintDialog打印多页设置/1或者多页

则是在form中添加的控件,可通过对其设置,预览打印页。
Rows设置显示最多页数。
printPreviewControl1.Document = pdDocument;
printPreviewControl1.Zoom = 1.0;
printPreviewControl1.Rows = 2;
printPreviewControl1.Dock = DockStyle.Fill;
printPreviewControl1.UseAntiAlias = true;
csshrb2004 2011-03-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/Tsapi/archive/2011/03/10/6237695.aspx

Daqing 2011-03-31
  • 打赏
  • 举报
回复
Daqing 2011-03-31
  • 打赏
  • 举报
回复

//在PrintPage事件第一句话中加入
e.HasMorePages = false;
//判断多页中也要加 else
{
e.HasMorePages = false;
}

就可去除 正在打印 窗口
龙宜坡 2011-03-29
  • 打赏
  • 举报
回复
搞那么复杂,干脆用ReportViewer得了.
Daqing 2011-03-28
  • 打赏
  • 举报
回复
            if (comboBox1.Text != string.Empty)
{
printPreviewControl1.StartPage = Convert.ToInt32(comboBox1.Text);
printPreviewControl1.Rows = Convert.ToInt32(comboBox1.Text);
}

//配合这两个用就可以了
lanyigoo 2011-03-28
  • 打赏
  • 举报
回复
第二个问题有哪位兄弟解决了的,也请帮一下小弟,谢谢
lanyigoo 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 tsapi 的回复:]
printPreviewControl用rows来计算它的页数的,他不会重新加载PrintDocument。还有,打印多页肯定会多次循环printdocument的printpage方法,这个是不可避免的啊, printPreviewControl显示不了是因为它不知道又多页,其实打印页已经生产多页了,只要给它一个数字就可。这个数字可以通过printpage得到啊。
[/Quote]
晕,不是说rows会重新加载,我是说定位所要的页面,如果用printPreviewControl.startPage来定位是会重新加载或需要新加载的,但在PrintPreviewDialog 定位所要页面是不会重新加载的,我要的是后者这个效果.有没有这样的方法?



Daqing 2011-03-28
  • 打赏
  • 举报
回复
printPreviewControl用rows来计算它的页数的,他不会重新加载PrintDocument。还有,打印多页肯定会多次循环printdocument的printpage方法,这个是不可避免的啊, printPreviewControl显示不了是因为它不知道又多页,其实打印页已经生产多页了,只要给它一个数字就可。这个数字可以通过printpage得到啊。
lanyigoo 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tsapi 的回复:]
PrintPreviewDialog 打印预览对话框
PageSettings 打印设置对话框/A5/A4 配合PrintDialog使用
PrintDialog打印多页设置/1或者多页

则是在form中添加的控件,可通过对其设置,预览打印页。
Rows设置显示最多页数。
printPreviewControl1.Document = pdDocument;
printPr……
[/Quote]
谢谢关注,因为不想用PrintPreviewDialog ,功能太少.所以用printPreviewControl,但后者的没分页预览功能,你的代码是可以显现所有分页的,但不能定位当前页,比如,选择第2页,显现的页就是第2页.用startPage来定位也是可以,它又把PrintDocument加载了一遍,如果有N多页,这性能就打折扣了.
有没有办法让printPreviewControl实现与PrintPreviewDialog一样的分页功能,请大家帮帮忙谢谢
Daqing 2011-03-28
  • 打赏
  • 举报
回复
                        //走纸换页
if (topMargin >= e.PageBounds.Height - 60)//页面累加的高度大于页面高度。根据自己需要,可以适当调整
{
//如果大于设定的高
e.HasMorePages = true;
printPreviewControl1.Rows += 1;
/*
* PrintPageEventArgs类的HaeMorePages属性为True时,通知控件器,必须再次調用OnPrintPage()方法,打印一个页面。
* PrintLoopI()有一个用於每个要打印的页面的序例。如果HasMorePages是False,PrintLoop()就会停止。
*/
return;
}
}
Daqing 2011-03-28
  • 打赏
  • 举报
回复
PrintPreviewDialog 打印预览对话框
PageSettings 打印设置对话框/A5/A4 配合PrintDialog使用
PrintDialog打印多页设置/1或者多页

则是在form中添加的控件,可通过对其设置,预览打印页。
Rows设置显示最多页数。
printPreviewControl1.Document = pdDocument;
printPreviewControl1.Zoom = 1.0;
printPreviewControl1.Rows = 2;
printPreviewControl1.Dock = DockStyle.Fill;
printPreviewControl1.UseAntiAlias = true;




nishierzhizhu 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lanyigoo 的回复:]
引用 5 楼 liuzhc 的回复:
PrintDocument的PrintPage方法的参数e
e.HasMorePage = true,就分页了。是这个意思吧?

谢谢关注,你这是生成打印文档的分页,与预览分页没关系.
[/Quote]

打印预览不就是看打印的效果吗,楼主是说预览页和打印页不一样?
lanyigoo 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jolyloving 的回复:]
帮顶一下
[/Quote]
3Q
lanyigoo 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jason_dct 的回复:]
先 帮顶, 找找资料
[/Quote]
谢谢,找过了,没找到能解决问题的资料
加载更多回复(3)

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧