Showing a Progress while Rendering a Report
Our sample projects and report templates can help you learn the basics of working with our products.This example shows how to display a custom progress for report building. Displaying the progress bar can be useful for complex reports, or reports with large amounts of data. You can use the
To build a report you can use the thread. The
In the screenshot below you can see the result of the sample code:

Rendering() event of the report object:
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SampleProgress.MasterDetailSubdetail.mrt"))
{
report.Load(stream);
}
report.Compile();
report.CompiledReport.Rendering += new EventHandler(CompiledReport_Rendering);
report.Render(false);
}
void CompiledReport_Rendering(object sender, EventArgs e)
{
if (label1.InvokeRequired)
label1.Invoke((EventHandler)delegate
{
label1.Text = report.StatusString;
});
else
label1.Text = report.StatusString;
}
To build a report you can use the thread. The
button1_Click() event adds necessary handlers and starts the thread. After rendering, the report will be shown in the viewer:
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.RunWorkerAsync();
label1.Text = "Rendering...";
label1.Visible = true;
progressBar1.Visible = true;
while (backgroundWorker1.IsBusy)
Application.DoEvents();
}
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
label1.Visible = false;
progressBar1.Visible = false;
report.Show();
}In the screenshot below you can see the result of the sample code:
