Personnalisation des fonctionnalités de l'interface utilisateur à l'aide d'interfaces d'extensibilitéCustomizing UI Features By Using Extensibility Interfaces

Les Outils de développement Office dans Visual Studio fournissent des classes et des concepteurs qui gèrent de nombreux détails d’implémentation quand vous les utilisez pour créer des volets de tâches personnalisés, des personnalisations de ruban et des zones de formulaire Outlook dans un complément VSTO.The Office development tools in Visual Studio provide classes and designers that handle many implementation details when you use them to create custom task panes, ribbon customizations, and Outlook form regions in a VSTO Add-in. Toutefois, vous pouvez également implémenter vous-même l' interface d'extensibilité pour chaque fonctionnalité si vous avez des spécifications spéciales.However, you can also implement the extensibility interface for each feature yourself if you have special requirements.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de compléments VSTO.Applies to: The information in this topic applies to VSTO add-in projects. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

Vue d'ensemble des interfaces d'extensibilitéOverview of Extensibility Interfaces

Microsoft Office définit un ensemble d’interfaces d’extensibilité que les compléments VSTO COM peuvent implémenter pour personnaliser certaines fonctionnalités, comme le ruban.Microsoft Office defines a set of extensibility interfaces that COM VSTO Add-ins can implement to customize certain features, such as the ribbon. Ces interfaces fournissent un contrôle total sur les fonctionnalités auxquelles elles donnent accès.These interfaces provide full control over the features they provide access to. Toutefois, l'implémentation de ces interfaces requiert une certaine connaissance de l'interopérabilité COM dans le code managé.However, implementing these interfaces requires some knowledge of COM interoperability in managed code. Dans certains cas, le modèle de programmation de ces interfaces n'est également pas intuitif pour les développeurs habitués au .NET Framework.In some cases, the programming model of these interfaces is also not intuitive for developers who are accustomed to the .NET Framework.

Quand vous créez un complément VSTO en utilisant les modèles de projet Office dans Visual Studio, vous n’avez pas à implémenter les interfaces d’extensibilité pour personnaliser des fonctionnalités comme le ruban.When you create a VSTO Add-in by using the Office project templates in Visual Studio, you do not have to implement the extensibility interfaces to customize features like the ribbon. Le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime les implémente pour vous.The Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime implements these interfaces for you. Vous pouvez plutôt utiliser les classes et concepteurs plus intuitifs fournis par Visual Studio.Instead, you can use more intuitive classes and designers provided by Visual Studio. Toutefois, vous pouvez quand même implémenter directement les interfaces d’extensibilité dans votre complément VSTO si vous le souhaitez.However, you can still implement the extensibility interfaces directly in your VSTO Add-in if you want to.

Pour plus d’informations sur les classes et les concepteurs que Visual Studio fournit pour ces fonctionnalités, consultez volets de tâches personnalisés, Concepteur de ruban, et création de zones de formulaire Outlook.For more information about the classes and designers that Visual Studio provides for these features, see Custom Task Panes, Ribbon Designer, and Creating Outlook Form Regions.

Interfaces d’extensibilité que vous pouvez implémenter dans un complément VSTOExtensibility Interfaces You Can Implement in a VSTO Add-in

Le tableau suivant répertorie les interfaces d'extensibilité que vous pouvez implémenter et les applications qui les prennent en charge.The following table lists the extensibility interfaces you can implement and the applications that support them.

InterfaceInterface DescriptionDescription ApplicationsApplications
IRibbonExtensibility Implémentez cette interface pour personnaliser l'interface utilisateur du ruban.Implement this interface to customize the ribbon UI. Remarque : que vous pouvez ajouter un ruban (XML) élément à un projet pour générer une valeur par défaut IRibbonExtensibility mise en œuvre dans votre composant complément VSTO.Note: You can add a Ribbon (XML) item to a project to generate a default IRibbonExtensibility implementation in your VSTO Add-in. Pour plus d'informations, consultez Ribbon XML.For more information, see Ribbon XML. ExcelExcel

InfoPath 2013InfoPath 2013

InfoPath 2010InfoPath 2010

OutlookOutlook

PowerPointPowerPoint

ProjetProject

VisioVisio

WordWord
Microsoft.Office.Core.ICustomTaskPaneConsumer Implémentez cette interface pour créer un volet de tâches personnalisé.Implement this interface to create a custom task pane. ExcelExcel

OutlookOutlook

PowerPointPowerPoint

WordWord
Microsoft.Office.Interop.Outlook.FormRegionStartup Implémentez cette interface pour créer une zone de formulaire Outlook.Implement this interface to create an Outlook form region. OutlookOutlook

Il existe plusieurs autres interfaces d'extensibilité définies par Microsoft Office, comme Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvideret Microsoft.Office.Core.SignatureProvider.There are several other extensibility interfaces that are defined by Microsoft Office, such as Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, and Microsoft.Office.Core.SignatureProvider. Visual Studio ne prend pas en charge l’implémentation de ces interfaces dans un complément VSTO créé à l’aide des modèles de projet Office.Visual Studio does not support implementing these interfaces in a VSTO Add-in created by using the Office project templates.

Utilisation des interfaces d'extensibilitéUsing Extensibility Interfaces

Pour personnaliser une fonctionnalité d’interface utilisateur à l’aide d’une interface d’extensibilité, implémentez l’interface appropriée dans votre projet de complément VSTO.To customize a UI feature by using an extensibility interface, implement the appropriate interface in your VSTO Add-in project. Substituez ensuite la méthode RequestService pour retourner une instance de la classe qui implémente l'interface.Then, override the RequestService method to return an instance of the class that implements the interface.

Pour obtenir un exemple d’application qui montre comment implémenter les interfaces IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumeret Microsoft.Office.Interop.Outlook.FormRegionStartup dans un complément VSTO pour Outlook, reportez-vous à l’exemple de gestionnaire d’interface utilisateur dans Office Development Samples.For a sample application that demonstrates how to implement the IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, and Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces in a VSTO Add-in for Outlook, see the UI Manager Sample in Office Development Samples.

Exemple d'implémentation d'une interface d'extensibilitéExample of Implementing an Extensibility Interface

L'exemple de code suivant présente une implémentation simple de l'interface Microsoft.Office.Core.ICustomTaskPaneConsumer pour créer un volet de tâches personnalisé.The following code example demonstrates a simple implementation of the Microsoft.Office.Core.ICustomTaskPaneConsumer interface to create a custom task pane. Cet exemple définit deux classes :This example defines two classes:

  • La classe TaskPaneHelper implémente Microsoft.Office.Core.ICustomTaskPaneConsumer pour créer et afficher un volet de tâches personnalisé.The TaskPaneHelper class implements Microsoft.Office.Core.ICustomTaskPaneConsumer to create and display a custom task pane.

  • La classe TaskPaneUI fournit l'interface utilisateur du volet de tâches.The TaskPaneUI class provides the UI of the task pane. Les attributs de la classe TaskPaneUI rendent la classe visible pour COM, ce qui permet aux applications Microsoft Office de la découvrir.The attributes for the TaskPaneUI class make the class visible to COM, which enables Microsoft Office applications to discover the class. Dans cet exemple, l'interface utilisateur est un UserControlvide, mais vous pouvez ajouter des contrôles en modifiant le code.In this example, the UI is an empty UserControl, but you can add controls by modifying the code.

    Note

    Pour exposer la classe TaskPaneUI à COM, vous devez également définir la propriété Inscrire pour COM Interop pour le projet.To expose the TaskPaneUI class to COM, you must also set the Register for COM Interop property for the project.

    Public Class TaskPaneHelper
        Implements Office.ICustomTaskPaneConsumer
    
        Friend taskPane As Office.CustomTaskPane
    
        Public Sub CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory) _
            Implements Office.ICustomTaskPaneConsumer.CTPFactoryAvailable
    
            If CTPFactoryInst IsNot Nothing Then
                ' Create a new task pane.
                taskPane = CTPFactoryInst.CreateCTP( _
                    "Microsoft.Samples.Vsto.VB.TaskPaneUI", "Contoso")
                taskPane.Visible = True
            End If
        End Sub
    End Class
    
    <System.Runtime.InteropServices.ComVisible(True)> _
    <System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.VB.TaskPaneUI")> _
    <System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")> _
    Public Class TaskPaneUI
        Inherits UserControl
    End Class
    
    public class TaskPaneHelper : Office.ICustomTaskPaneConsumer
    {
        internal Office.CustomTaskPane taskPane;
    
        public void CTPFactoryAvailable(Office.ICTPFactory CTPFactoryInst)
        {
            if (CTPFactoryInst != null)
            {
                // Create a new task pane.
                taskPane = CTPFactoryInst.CreateCTP(
                    "Microsoft.Samples.Vsto.CS.TaskPaneUI",
                    "Contoso");
                taskPane.Visible = true;
            }
        }
    }
    
    [System.Runtime.InteropServices.ComVisible(true)]
    [System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.CS.TaskPaneUI")]
    [System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")]
    public class TaskPaneUI : UserControl
    {
    }
    

    Pour plus d'informations sur l'implémentation de Microsoft.Office.Core.ICustomTaskPaneConsumer, voir Création de volets de tâches personnalisés Office (2007) dans la documentation de Microsoft Office.For more information about implementing Microsoft.Office.Core.ICustomTaskPaneConsumer, see Creating Custom Task Panes in the 2007 Office System in the Microsoft Office documentation.

Exemple de substitution de la méthode RequestServiceExample of Overriding the RequestService Method

L'exemple de code suivant montre comment substituer la méthode RequestService pour retourner une instance de la classe TaskPaneHelper de l'exemple de code précédent.The following code example demonstrates how to override the RequestService method to return an instance of the TaskPaneHelper class from the previous code example. Il vérifie la valeur du paramètre serviceGuid pour déterminer quelle interface est demandée, puis retourne un objet qui implémente cette interface.It checks the value of the serviceGuid parameter to determine which interface is being requested, and then returns an object that implements that interface.

Friend taskPaneHelper1 As TaskPaneHelper

Protected Overrides Function RequestService( _
    ByVal serviceGuid As Guid) As Object

    If (serviceGuid = GetType(Office.ICustomTaskPaneConsumer).GUID) Then
        If (taskPaneHelper1 Is Nothing) Then
            taskPaneHelper1 = New TaskPaneHelper()
        End If
        Return taskPaneHelper1
    End If

    Return MyBase.RequestService(serviceGuid)
End Function
internal TaskPaneHelper taskPaneHelper1;

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.ICustomTaskPaneConsumer).GUID)
    {
        if (taskPaneHelper1 == null)
        {
            taskPaneHelper1 = new TaskPaneHelper();
        }
        return taskPaneHelper1;
    }

    return base.RequestService(serviceGuid);
}

Voir aussiSee Also

Procédures pas à pas et des exemples de développement office Office Development Samples and Walkthroughs
Programming VSTO Add-Ins Programming VSTO Add-Ins
Développement de Solutions Office Developing Office Solutions
Appel de Code dans des Compléments VSTO à partir d’autres Solutions Office Calling Code in VSTO Add-ins from Other Office Solutions
Comment : créer des projets Office dans Visual Studio How to: Create Office Projects in Visual Studio
Architecture des compléments VSTOArchitecture of VSTO Add-ins