C# WINFORM 水晶报表 打印

yj01263431 2015-04-13 10:53:56
用水晶报表打印如何控制暂停和继续?
...全文
339 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yj01263431 2015-05-02
  • 打赏
  • 举报
回复
引用 2 楼 lovelj2012 的回复:
任务发送给打印机,暂停或者继续和水晶报表没神马关系
打印的时候如何获取打印Jobid 呢 ,就差这个了 有了JobID我就可以暂停了 public static bool PauseOrResumePrintJob(string printerName, int printJobID, string type) { bool isActionPerformed = false; string searchQuery = "SELECT * FROM Win32_PrintJob"; ManagementObjectSearcher searchPrintJobs = new ManagementObjectSearcher(searchQuery); ManagementObjectCollection prntJobCollection = searchPrintJobs.Get(); foreach (ManagementObject prntJob in prntJobCollection) { System.String jobName = prntJob.Properties["Name"].Value.ToString(); //Job name would be of the format [Printer name], [Job ID] char[] splitArr = new char[1]; splitArr[0] = Convert.ToChar(","); string prnterName = jobName.Split(splitArr)[0]; int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]); string documentName = prntJob.Properties["Document"].Value.ToString(); if (String.Compare(prnterName, printerName, true) == 0) { if (prntJobID == printJobID) { if (type == "Pause") prntJob.InvokeMethod("Pause", null); else prntJob.InvokeMethod("Resume", null); isActionPerformed = true; break; } } } return isActionPerformed; }
poloyzhang 2015-04-14
  • 打赏
  • 举报
回复
没有暂停这个功能
江南小鱼 2015-04-13
  • 打赏
  • 举报
回复
任务发送给打印机,暂停或者继续和水晶报表没神马关系
yj01263431 2015-04-13
  • 打赏
  • 举报
回复
没人么,自己顶起
EdsionWang 2015-04-13
  • 打赏
  • 举报
回复
这不是水晶报表能控制到的了吧
yj01263431 2015-04-13
  • 打赏
  • 举报
回复
随便问一下 repostDoc.PrintToPrinter(1, true, 1, 2) 改为 repostDoc.PrintToPrinter(1, true, 1, 1) repostDoc.PrintToPrinter(1, true, 2, 2) 打印出来的效果是否一样? 因为我还要加个进度条
yj01263431 2015-04-13
  • 打赏
  • 举报
回复
问题是怎么控制暂停呢?
江南小鱼 2015-04-13
  • 打赏
  • 举报
回复
repostDoc.PrintToPrinter(1, true, 1, 10)
这行代码是发送请求给打印机,命令发送后打印与否和报表就没关系了。
yj01263431 2015-04-13
  • 打赏
  • 举报
回复
private void PrintOrders(string orderid) { DataTable dtPrint = bus.GetOrderDetailsInfo(orderid); dtPrint.TableName = "dtOrderDetailsInfo"; string pathRpt = Application.StartupPath.Replace("\\bin\\Debug", "") + @"\crGoodsReport.rpt"; ReportDocument repostDoc = new ReportDocument(); repostDoc.Load(pathRpt);// 加载打印模板文件 repostDoc.SetDataSource(dtPrint);// 设置数据源 repostDoc.PrintOptions.PrinterName = bus.GetAttrValueByUserName("选择打印机", Business.userName); // 设置打印机名称 repostDoc.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.Paper10x14;// 设置打印纸张样式 repostDoc.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;//纸张方向 repostDoc.PrintToPrinter(1, true, 1, 10); } repostDoc.PrintToPrinter(1, true, 1, 10); 执行这一句的时候就直接打印了,怎么暂停呢? 用线程暂停好像控制不了吧

110,571

社区成员

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

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

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