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
Version de Microsoft Office
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
Comment : créer des projets Visual Studio Tools pour Office
Concepts
Programmation de compléments d'application
Développement de solutions Office
Appel de code dans des compléments d'application à partir d'autres solutions Office