Here we will learn how to create a Windows Forms project, create, print barcodes on the Crystal Reports report on the form.
By end of this tutorial, you will get a Crystal Reports desktop application with barcodes printed on the report content.
Prerequisites
BarcodeLib.Barcode.CrystalReports.dll
Microsoft .NET Framework 4.x
Visual Studio 2022
Crystal Reports for Visual Studio 2022 Developer Edition
1. Create new Windows Forms project
Open Visual Studio 2022, and Create a new project.
Choose Crystal Reports Application and click Next button.
Input the new Project name as BarcodeLibCrystalReportsBarcodeWinFormsDemo,
and choose Framework as .NET Framework 4.7.2. Click button Create.
In Crystal Reports Gallery dialog, choose Using the Report Wizard for the new document,
and choose Standard for Expert. Click button OK.
Click Finish button. We will create data set later.
Now we have created the Crystal Reports Windows application successfully.
2. Add barcode library
Add downloaded BarcodeLib barcode library dll BarcodeLib.Barcode.CrystalReports.dll to the project reference.
3. Add data set
Add a new item DataSet named DataSet1.xsd.
Right click data set DataSet1.xsd, Add a DataTable named DataTable1.
Add two columns to the data table DataTable1.
Column Data: set property DataType to System.String.
Column Barcode: set property DataType to System.Byte[].
4. Add barcode to report
Double click CrystalReport1.rpt in the project Solution Explorer to open the report designer in Visual Studio.
Right click the report in the designer, choose Database > Database Expert....
In the popup "Database Expert" dialog,
Select DataTable1 in ADO.NET DataSets,
Click button >.
Click button OK.
In Field Explorer window, drag, add two columns Data and Barcode to the report Details section.
Select the Barcode item in the report designer, change its properties:
Set property XScaling to 4
Set property YScaling to 1.5
Here we will print barcode image with 4-inch width, and 1.5-inch height in the report.
5. C# code to print barcode
Copy and replace the following C# code to file Form1.cs in Visual Studio.
Drag field "Barcode" to the report template. And Right click "Barcode" object, select "Format Object" menu. view image
In "Format Editor" form, check "Can Grow" property. view image
Add Crystal Report Viewer to the window form.
Resize "Form1", and add "CrystalReportViewer" to the form, with the default setting unchanged. view image
Add a reference to BarcodeLib.Barcode.CrystalReports.dll.
Add the following code to the Form1.cs file.
using System.Data.OleDb; using System.Drawing.Imaging; using BarcodeLib.Barcode.CrystalReports; using BarcodeLib.Barcode;
privatevoid Form1_Load(object sender, EventArgs e) { //create the database connection. Please change to correct data file (BarcodeDemoData.mdb) path. OleDbConnection aConnection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/BarcodeLib_NETBarcode_Trial/ReportingData/BarcodeDemoData.mdb");aConnection.Open();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM Customer", aConnection); DataSet ds = new DataSet(); dataAdapter.Fill(ds);
//Add the Barcode column to the DataSet ds.Tables[0].Columns.Add(new DataColumn("Barcode", typeof(byte[])));
//Create an instance of Linear Barcode //Use DataMatrixCrystal for Data Matrix //Use PDF417Crystal for PDF417 //Use QRCodeCrystal for QR Code LinearCrystal barcode = new LinearCrystal(); //Barcode settings barcode.Type = BarcodeType.CODE128; barcode.BarHeight = 50; //50 pixel barcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
foreach (DataRow dr in ds.Tables[0].Rows) { barcode.Data = (int)dr["CustomerId"] + ""; byte[] imageData = barcode.drawBarcodeAsBytes(); dr["Barcode"] = imageData; }
CustomerReport rpt = new CustomerReport(); rpt.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = rpt;
//close the connection Its important. aConnection.Close();