If you are developing applications which includes reporting with Crystal Reports, you may have noticed that it’s not possible to invoke a custom method, when the user prints the report. However this was something which was easily implemented in Crystal Reports 8/8.5 but removed from latter versions.
But there’s a workaround for this. In this example I will show you how to invoke a method in our client application, when the print button of the report viewer is clicked.
In order to do that we have to add our custom method to the report viewers’ print buttons’ print action.
Create a new windows application.
Add another form to the project and name it as ‘CustomReportViewer.cs’.
Add a Crystal Report viewer to a newly created form. (If the crystal report viewer is not available in the toolbox, please add it to the toolbox first)
Add new report to the project and name it as ‘SampleReport.rpt’.
Now add the following code to the ‘CustomReportViewer’ class
Add the following property.
Add this additional code to the initialization method.
Using the above coding we can find out the print button of the report viewers’ too strip. And the 1st item is for the print button. (I have found this out from its ToolTipText).
How ever you can add your own button if you like or you can use the existing print button. Both options are illustrated.
Add the following methods.
Here is the complete coding of the ‘CustomReportViewer’ class.
Add the following delegate to your calling class
Add the following method. This is the method that we want to invoke when the print button or the custom button is clicked.
And a button and the following click event code.
The complete source of the calling form:
Now if you run the project, you can get a similar screen shown below. And please note that I have added a resource file named ‘Resources’ and added an image named ‘CustomButton’
And if you click either of the buttons, your custom method will be invoked. The default print method will be executed only when the print button is clicked.