New to Telerik UI for WinFormsStart 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

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

See Also

In this article
See Also
Not finding the help you need?
Contact Support