Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

PdfViewer.AddService(Type, Object, Boolean) Method

Adds the specified service to the service container.

Namespace: DevExpress.XtraPdfViewer

Assembly: DevExpress.XtraPdfViewer.v24.2.dll

NuGet Package: DevExpress.Win.PdfViewer

#Declaration

public void AddService(
    Type serviceType,
    object serviceInstance,
    bool promote
)

#Parameters

Name Type Description
serviceType Type

The type of service to add.

serviceInstance Object

An instance of the service type to add. This object must implement or inherit from the type indicated by the serviceType parameter.

promote Boolean

true, to promote this request to any parent service containers; otherwise, false.

#Remarks

The PdfViewer implements IServiceProvider and IServiceContainer interfaces. In addition to providing services, it also provides a mechanism for adding and removing services. To obtain a service, call the PdfViewer.GetService<T> method.

When a service is added, it can be added with instructions to promote it. When a service is promoted, it is added to any parent service container, on up, until the top of the service container tree is reached.

#Example

This example shows how to modify the functionality of an existing PdfViewer command.

The PdfViewer exposes the IPdfViewerCommandFactoryService interface that enables you to substitute the default command with your own custom command.

To accomplish this task:

  • Create a custom command class (for example, a CustomNextPageCommand class), inherited from the command that you wish to replace (for example, PdfNextPageCommand).
  • Override the required method of the command. The main functionality and command specifics are located in the Execute method.
  • Create a class (for example, CustomPdfViewerCommandFactoryService) that implements the IPdfViewerCommandFactoryService. You should override the IPdfViewerCommandFactoryService.CreateCommand method to create an instance of a custom command class if an identifier of a certain command is passed as a parameter. So, instead of the default command, a custom command will be used by the PdfViewer.
  • Use the created class to substitute for the default PdfViewer’s service.

View Example

using DevExpress.XtraPdfViewer;
using System;
using System.Windows.Forms;

namespace ViewerCustomCommand {
    public partial class Form1 : Form {

        void ReplacePdfViewerCommandFactoryService(PdfViewer control) {
            IPdfViewerCommandFactoryService service = control.GetService<IPdfViewerCommandFactoryService>();
            if (service == null)
                return;
            control.RemoveService(typeof(IPdfViewerCommandFactoryService));
            control.AddService(typeof(IPdfViewerCommandFactoryService), new CustomPdfViewerCommandFactoryService(control,service));
        }

        public Form1() {
            InitializeComponent();
            pdfViewer1.LoadDocument("..\\..\\Demo.pdf");
            ReplacePdfViewerCommandFactoryService(pdfViewer1);
        }     
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Imports System.Windows.Forms

Namespace ViewerCustomCommand
    Friend NotInheritable Class Program

        Private Sub New()
        End Sub

        ''' <summary>
        ''' The main entry point for the application.
        ''' </summary>
        <STAThread> _
        Shared Sub Main()
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
            Application.Run(New Form1())

        End Sub
    End Class
End Namespace
See Also