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 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();
}

На скриншоте ниже Вы можете увидеть результат выполнения данного кода:

Showing a Progress while Rendering a Report

Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.