c#点击打印预览里面的打印按钮,要弹出打印设置窗口,要怎么做?

sheyanfen 2007-01-16 09:38:00
1、在预览里,点击打印按钮,要弹出打印设置窗口,可以选择打印机及打印哪些页。
2、为什么无论在哪个时候弹出打印设置窗口,里面的打印范围都是全部,页码范围和选定范围不可选,也就是不能选择打印哪些页?

以上两个问题,有什么解决办法吗?
...全文
4816 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
chujingbin 2010-09-15
  • 打赏
  • 举报
回复
mark
耗子哭死猫 2010-08-20
  • 打赏
  • 举报
回复
接着上面的话题~~~
C#实现web打印效果
我在托单里面输入了数据,点击提交,各个文本框以及其他的值都放入了数据库(sql server)
打印预览的时候。这些取到的数据分别显示在Label(其他控件也可以)上,我想对 这些Label上取到的值进行拖动,然后拼凑,形成一个订单!订单都不同,所以要Lable控件取到的数据任意拖动。

问题一:怎么将数据库的数据分别填写到Label控件上,其他控件也可以。
问题二:怎么将Label控件任意拖动,任意拼凑.
问题三:Label控件拼凑的时候,前提是那什么作为它操作的背景(就是Label拼凑的时候,不是有个操作平台,它的背景是作为模板吗?)
njxb405 2007-01-18
  • 打赏
  • 举报
回复
请问:如何在预览时能显示调整边距的线,跟EXCEL一样直接用鼠标调整页面的边距?
sheyanfen 2007-01-17
  • 打赏
  • 举报
回复
再次感谢hbxtlhx(平民百姓),及大家的热心帮助,谢谢大家,结帐了。
sheyanfen 2007-01-17
  • 打赏
  • 举报
回复
总结一下,希望对大家有帮助。

1、打印和预览用同一个PrintDocument,窗体中设有一个打印按钮
2、点击窗体“打印”按钮,分页预览所有数据
3、在预览里,点击打印,弹出打印设置窗口,供选择打印机及要打印的页码范围


实现方法:

1、设置this.printDialog1.AllowSomePages = true,弹出打印设置窗口时,可输入页面范围

2、窗体打印按钮,初始化变量,弹出打印预览

3、BeginPrint事件,实现预览中点击打印,弹出打印设置窗口,点击确定按钮进行打印,点击取消按钮不打印。

4、PrintPage事件,实现分页预览及打印

5、EndPrint事件

//窗体打印按钮
protected void printButton()
{
  printdv = (System.Data.DataView)grid.DataSource;
  if( printdv.Count > 0 )
  {
//是否显示打印设置窗口,预览时为false,预览后为true
showPrintDialog = false;
//每页记录数
printPagesize = 20;
//打印总页数
printpagecount = (printdv.Count % printPagesize == 0) ? printdv.Count/printPagesize : printdv.Count/printPagesize+1;

//开始打印页码,最后打印页码
this.printDialog1.PrinterSettings.FromPage = 1;
this.printDialog1.PrinterSettings.ToPage = printpagecount;

//开始打印索引号
printIndex = 0;

//打印预览
if( this.printPreviewDialog1.ShowDialog() == DialogResult.OK )
{}
  }
  else
  {
MessageBox.Show("没有要打印的记录!");
  }
}
private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
  if( showPrintDialog )
  {
//弹出打印设置
if( this.printDialog1.ShowDialog() == DialogResult.OK )
{
  //取消当前的打印任务,点击打印时已生成一次打印任务,必须先取消
  e.Cancel = true;

  //页码范围正确,进行打印
  if( this.printDialog1.PrinterSettings.FromPage > 0 && this.printDialog1.PrinterSettings.ToPage >=

this.printDialog1.PrinterSettings.FromPage && this.printDialog1.PrinterSettings.ToPage <= printpagecount )
  {
//计算开始打印索引号
printIndex = (this.printDialog1.PrinterSettings.FromPage-1) * this.printPagesize;
//确定打印后,必须将值设为false,否则会再继续打开打印设置
showPrintDialog = false;
//开始打印
this.printDocument1.Print();
  }
  else
  {
MessageBox.Show("输入的页码有误,请重新输入!");
  }
}
else
  e.Cancel = true;
  }
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
  //最后打印索引号
  lastIndex = this.printDialog1.PrinterSettings.ToPage * printPagesize;
  if( lastIndex > printdv.Count )
lastIndex = printdv.Count;

  if( printIndex < lastIndex )
  {
printIndex = ...;//调用打印函数,并返回下一页打印起始索引号
if( printIndex == lastIndex )
  e.HasMorePages = false;
else
  e.HasMorePages = true;
  }
}
private void printDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
  showPrintDialog = true;
}

「已注销」 2007-01-17
  • 打赏
  • 举报
回复
up
goodpopo 2007-01-17
  • 打赏
  • 举报
回复
学习
swing05 2007-01-17
  • 打赏
  • 举报
回复
haha mark!
l5823448 2007-01-17
  • 打赏
  • 举报
回复
jf
http://www.morok.biz/?u=xueshou
wangruimin 2007-01-17
  • 打赏
  • 举报
回复
up
北京的雾霾天 2007-01-17
  • 打赏
  • 举报
回复
:)
sheyanfen 2007-01-16
  • 打赏
  • 举报
回复
谢谢hbxtlhx(平民百姓) ,基本知道怎么做了,

打印出选择的页,还需要写代码进行控制对不对

非常感谢大家,明天结贴:)
CCjian 2007-01-16
  • 打赏
  • 举报
回复
Mark
貓哥是個傳說 2007-01-16
  • 打赏
  • 举报
回复
果然是強貼,學習受益,收藏~
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
e.Cancel = false???
---
是不是e.Cancel = true才是取消?
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
用如下的属性应该就可以了:
this.printDialog1.PrinterSettings.FromPage;//打印开始的页
this.printDialog1.PrinterSettings.PrintRange;//打印页的范围
this.printDialog1.PrinterSettings.ToPage;//打印的尾页
sheyanfen 2007-01-16
  • 打赏
  • 举报
回复
有在检查,我都设置了e.Cancel = false了,但还是一样。

请问hbxtlhx(平民百姓),怎么取得我输入的页码范围及当前正打印的页码?
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
呵呵,楼主再好好查看一下代码看是什么问题导致这个问题的发生.
不在其位,不知道其难啊.
sheyanfen 2007-01-16
  • 打赏
  • 举报
回复
打印和预览的时候,用的是同一个PrintDocument,就是因为不想另外加按钮来设置打印,所以才麻烦啊。

现在能在预览里弹出打印设置,但出现另外一个问题,
预览后总页数是5页,点击打印按钮,在页面范围里选择从2到2,确定打印,
这时在打印机里会出现两个任务,一个是5页,一个是1页
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
如果你在打印及预览的时候用的是一个PrintDocument的实例的话就设置一次就可以了,你可以单独来设置,而不写在BeginPrint里面.比如在程序里添加一个设置的控钮专门来设置打印设置,而在打印及预览的时候直接打印.
加载更多回复(22)

111,129

社区成员

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

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

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