Partager via


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

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau de l'application

Version de Microsoft Office

  • Version 2007 de Microsoft Office System

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Visual Studio Tools pour Office fournit 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 du ruban et des zones de formulaires 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.

Vue d'ensemble des interfaces d'extensibilité

Les applications de la version 2007 de Microsoft Office System définissent un ensemble d'interfaces d'extensibilité que les compléments COM peuvent implémenter pour personnaliser certaines fonctionnalités de l'interface utilisateur. Visual Studio Tools pour Office simplifie ce processus en implémentant ces interfaces pour vous et en fournissant des classes et des concepteurs que vous pouvez utiliser à la place. Toutefois, vous pouvez également implémenter directement des interfaces d'extensibilité dans votre complément.

Pour plus d'informations sur les classes et les concepteurs que Visual Studio Tools pour Office fournit pour ces fonctionnalités, consultez Vue d'ensemble des 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. Pour plus d'informations, consultez IRibbonExtensibility Object dans la documentation de Microsoft Office 2007.

Remarque :
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 2007

InfoPath 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implémentez cette interface pour créer un volet de tâches personnalisé. Pour plus d'informations, consultez ICustomTaskPaneConsumer Object dans la documentation de Microsoft Office 2007.

Excel 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implémentez cette interface pour créer une zone de formulaire Outlook. Pour plus d'informations, consultez FormRegionStartup Interface dans la documentation de Microsoft Office 2007.

Outlook 2007

Il existe plusieurs autres interfaces d'extensibilité définies par des applications de la version 2007 de Microsoft Office System, telles que Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider et Microsoft.Office.Core.SignatureProvider. Visual Studio Tools pour Office ne prend pas en charge l'implémentation de ces interfaces dans un complément.

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 et Microsoft.Office.Core.ICustomTaskPaneConsumer dans un complément pour Excel, consultez Services du runtime, exemple.

Exemple 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 Comment : inscrire un composant pour COM Interop.

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", Type.Missing);
            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 de tâches personnalisés dans la version 2007 de Microsoft Office System dans la documentation de Microsoft Office 2007.

Exemple 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

Services du runtime, exemple

Comment : créer des projets Visual Studio Tools pour Office

Concepts

Programmation de compléments d'application

Développement de solutions Office

Élément hôte AddIn

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

Architecture des compléments d'application