Partager via


Personnalisation des fonctionnalités de l'interface utilisateur à l'aide d'interfaces d'extensibilité

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 lorsque vous les utilisez pour créer des volets de tâches personnalisés, des personnalisations de ruban, et les zones de formulaire Outlook dans un complément d'application.Toutefois, vous pouvez également implémenter vous-même l'interface d'extensibilité pour chaque fonctionnalité si vous avez des spécifications spéciales.

**S'applique à :**Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Microsoft Office 2013 Preview et Microsoft Office 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

Vue d'ensemble des interfaces d'extensibilité

Microsoft Office définit un jeu d'interfaces d'extensibilité que les compléments COM peut implémenter pour personnaliser certaines fonctionnalités, telles que le ruban.Ces interfaces fournissent un contrôle total sur les fonctionnalités auxquelles elles donnent accès.Toutefois, l'implémentation de ces interfaces requiert une certaine connaissance de l'interopérabilité COM dans le code managé.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.

Lorsque vous créez un complément en utilisant des modèles de projet Office dans Visual Studio, vous ne devez pas implémenter les interfaces d'extensibilité pour personnaliser des fonctionnalités telles que le ruban.Le Visual Studio Tools pour Office Runtime implémente ces interfaces à votre place.Vous pouvez, à la place, utiliser des classes et des concepteurs plus intuitifs fournis par Visual Studio.Toutefois, vous pouvez encore implémenter directement les interfaces d'extensibilité dans votre complément si vous le souhaitez.

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.

Interfaces d'extensibilité que vous pouvez implémenter dans un complément

Le tableau suivant répertorie les interfaces d'extensibilité que vous pouvez implémenter et les applications qui les prennent en charge.

Interface

Description

Applications

Microsoft.Office.Core.IRibbonExtensibility

Implémentez cette interface pour personnaliser l'interface utilisateur du ruban.

RemarqueRemarque
Vous pouvez ajouter un élément Ruban (XML) à un projet pour générer une implémentation par défaut de Microsoft.Office.Core.IRibbonExtensibility dans votre complément.Pour plus d’informations, consultez Élément XML Ribbon.

Excel 2013

InfoPath 2013

Outlook 2013

PowerPoint 2013

Project 2013

Visio 2013

Word 2013

Excel 2010

InfoPath 2010

Outlook 2010

PowerPoint 2010

Project 2010

Visio 2010

Word 2010

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implémentez cette interface pour créer un volet de tâches personnalisé.

Excel 2013

Outlook 2013

PowerPoint 2013

Word 2013

Excel 2010

Outlook 2010

PowerPoint 2010

Word 2010

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implémentez cette interface pour créer une zone de formulaire Outlook.

Outlook 2013

Outlook 2010

Il existe plusieurs autres interfaces d'extensibilité définies par Microsoft Office, tel que Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider et Microsoft.Office.Core.SignatureProvider.Visual Studio ne prend pas en charge l'implémentation de ces interfaces dans un complément créé à l'aide des modèles de projet Office.

Utilisation d'interfaces d'extensibilité

Pour personnaliser une fonctionnalité interface utilisateur à l'aide d'une interface d'extensibilité, implémentez l'interface appropriée dans votre projet de complément.Substituez ensuite la méthode RequestService pour retourner une instance de la classe qui implémente l'interface.

Pour un exemple d'application montrant comment implémenter les interfaces Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer et Microsoft.Office.Interop.Outlook.FormRegionStartup dans un complément pour Outlook, regardez l'exemple de gestionnaire d'interface utilisateur dans Exemples de développement Office.

Bb608601.collapse_all(fr-fr,VS.110).gifExemple d'implémentation d'une interface d'extensibilité

L'exemple de code suivant montre une implémentation simple de l'interface Microsoft.Office.Core.ICustomTaskPaneConsumer pour créer un volet de tâches personnalisé.Cet exemple définit deux classes :

  • La classe TaskPaneHelper implémente Microsoft.Office.Core.ICustomTaskPaneConsumer pour créer et afficher un volet de tâches personnalisé.

  • La classe TaskPaneUI fournit l'interface utilisateur du volet de tâches.Les attributs pour la classe TaskPaneUI rendent la classe visible pour COM, ce qui permet aux applications Microsoft Office de découvrir la classe.Dans cet exemple, l'interface utilisateur est un UserControl vide, mais vous pouvez ajouter des contrôles en modifiant le code.

    [!REMARQUE]

    Pour exposer la classe TaskPaneUI à COM, vous devez également définir la propriété Inscrire pour COM Interop pour le projet.Pour plus d’informations, consultez Gestion des propriétés de compilation.

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, consultez Création de volets des tâches personnalisés Office (2007) dans la documentation de Microsoft Office.

Bb608601.collapse_all(fr-fr,VS.110).gifExemple de substitution de la méthode RequestService

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.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.

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 aussi

Tâches

Comment : créer des projets Office dans Visual Studio

Concepts

Appel de code dans des compléments d'application à partir d'autres solutions Office

Architecture des compléments d'application

Autres ressources

Exemples et procédures pas à pas relatifs au développement Office

Programmation de compléments d'application

Développement de solutions Office