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.
Listing 18.2. Printing a Report with the PrintToPrinter Method
Private Sub button1_Click(sender As Object, e As System.EventArgs)
oRpt = New ReportDocument()
oRpt.Load("C:Report1.rpt")
Try
oRpt.PrintOptions.PrinterName = "jbnethp-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.