You can bypass the viewer control and print a report directly from a menu item or the click event of a button. Using the PrintToPrinter method of the ReportDocument class, you can print a loaded report directly to a printer. Listing 18.2 demonstrates how you could accomplish this in the click event of a button. Notice the code comments for the parameters for the PrintToPrinter method that sets the properties on the printed document.
Private Sub button1_Click(sender As Object, e As System.EventArgs) oRpt = New ReportDocument() oRpt.Load("C:\Report1.rpt") Try oRpt.PrintOptions.PrinterName = "\jbnet\hp-color" ' The PrintToPrinter method parameters are: ' # of copies ' Collated ' Start Page ' End Page oRpt.PrintToPrinter(1, True, 1, 1) Catch err As Exception MessageBox.Show(err.ToString()) End Try End Sub
private void button1_Click(object sender, System.EventArgs e) { oRpt = new ReportDocument(); oRpt = new ReportDocument(); oRpt.Load(@"C:\Report1.rpt"); try { oRpt.PrintOptions.PrinterName = "@\\jbnet\\hp-color"; // The PrintToPrinter method parameters are: // # of copies // Collated // Start Page // End Page oRpt.PrintToPrinter(1, true, 1, 1); } catch(Exception err) { MessageBox.Show(err.ToString()); } }
After you add this code to the click event of a button and modify the location of the printer and the report name, the file prints directly without a viewer control.