VB.NET中如何通过代码直接打印,避免弹出打印对话框
直接打印ReportViewer内容不弹出对话框的VB.NET实现
嘿,你遇到的问题很常见——ReportViewer.PrintDialog()方法本身就是用来唤起打印对话框让用户确认设置的,所以想要跳过对话框直接打印,得换个方法来用!
你可以使用ReportViewer.PrintToPrinter()方法,这个方法允许你直接传入配置好的PrinterSettings来完成静默打印,不需要弹出任何对话框。下面是修改后的代码:
' 获取ReportViewer的打印机设置对象 Dim PrintR_ As Printing.PrinterSettings = ReportViewer1.PrinterSettings ' 指定目标打印机名称 PrintR_.PrinterName = "Microsoft XPS Document Writer" ' 先验证打印机是否存在,避免报错 If PrintR_.IsValid Then ' 调用PrintToPrinter直接打印:参数依次是 份数、是否逐份打印、起始页、结束页(0表示全部) ReportViewer1.PrintToPrinter(PrintR_, New Printing.PageSettings(), False, 0, 0) Else ' 这里可以加个提示,比如打印机不存在的处理 MessageBox.Show("指定的打印机不存在,请检查打印机名称!") End If
关键说明:
PrintToPrinter方法的参数解释:- 第一个参数是配置好的
PrinterSettings对象,我们已经指定了打印机名称 - 第二个参数是
PageSettings,这里用New Printing.PageSettings()就用默认页面设置 - 第三个参数
False表示不逐份打印(如果需要逐份就设为True) - 最后两个参数
0, 0表示打印所有页面,如果你需要打印特定页码范围,可以改成对应的数字(比如从1到5就传1,5)
- 第一个参数是配置好的
这样修改后,代码就会直接使用你指定的打印机完成打印,不会再弹出那个对话框啦!
内容的提问来源于stack exchange,提问作者Hesham Mohamed




