New to Telerik UI for WinForms? Start a free 30-day trial
Handle Page Rendering Events
Updated over 6 months ago
RadPdfViewer exposes two events indicating when a page starts and completes a rendering operations. The article will demonstrate how these events can be utilized to display a waiting-bar during the time-consuming job.
The PageRenderStarted and PageRenderCompleted events are raised from a background thread so one should use BeginInvoke when interacting with any controls on the UI thread from the event handlers.
Figure 1: Waiting Bar While Rendering

Initial Setup and Events Subscription.
C#
public WaitingBarForm()
{
InitializeComponent();
this.radPdfViewer1.DocumentLoaded += RadPdfViewer1_DocumentLoaded;
this.radPdfViewer1.ViewerMode = FixedDocumentViewerMode.None;
this.radPdfViewer1.FitFullPage = true;
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.radPdfViewer1.LoadDocument(@"..\..\PdfViewer\ObjectiveC.pdf");
}
private void RadPdfViewer1_DocumentLoaded(object sender, EventArgs e)
{
this.radPdfViewer1.PageRenderStarted += OnPageRenderStarted;
this.radPdfViewer1.PageRenderCompleted += OnPageRenderCompleted;
}
Events Handling
C#
private void OnPageRenderCompleted(object sender, EventArgs e)
{
if (this.radPdfViewer1.InvokeRequired)
{
this.radPdfViewer1.BeginInvoke((MethodInvoker)delegate
{
if (this.radPdfViewer1.PdfViewerElement.IsWaiting())
{
this.radPdfViewer1.PdfViewerElement.StopWaiting();
}
});
}
}
private void OnPageRenderStarted(object sender, EventArgs e)
{
if (this.radPdfViewer1.InvokeRequired)
{
this.radPdfViewer1.BeginInvoke((MethodInvoker)delegate
{
if (!this.radPdfViewer1.PdfViewerElement.IsWaiting())
{
this.radPdfViewer1.PdfViewerElement.StartWaiting();
}
});
}
}