Personnalisation des fonctionnalités de l'interface utilisateur à l'aide d'interfaces d'extensibilité
Les outils de développement Office de 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 des 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 2010 et la version 2007 de Microsoft® Office System. Pour plus d'informations, 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 peuvent 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 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. 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 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 |
---|---|---|
Implémentez cette interface pour personnaliser l'interface utilisateur du ruban.
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 et Excel 2010 InfoPath 2010 Outlook 2007 et Outlook 2010 PowerPoint 2007 et PowerPoint 2010 Project 2010 Visio 2010 Word 2007 et Word 2010 |
|
Implémentez cette interface pour créer un volet de tâches personnalisé. |
Excel 2007 et Excel 2010 Outlook 2007 et Outlook 2010 PowerPoint 2007 et PowerPoint 2010 Word 2007 et Word 2010 |
|
Implémentez cette interface pour créer une zone de formulaire Outlook. |
Outlook 2007 et 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.
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.
Notes
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 des tâches personnalisés Office (2007) dans la documentation de Microsoft Office.
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
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