Gestion des volets de tâches personnalisés dans plusieurs fenêtres d'application
Mise à jour : novembre 2007
S'applique à |
---|
Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et applications de Microsoft Office spécifiés. Type de projet
Application Microsoft Office
Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet. |
Lorsque vous créez un volet de tâches personnalisé dans une application qui utilise plusieurs fenêtres pour afficher des documents et d'autres éléments, vous devez prendre des mesures supplémentaires afin de garantir l'affichage du volet de tâches lorsque l'utilisateur attend qu'il le soit.
Les volets de tâches personnalisés de toutes les applications sont associés à une fenêtre frame de document, qui présente une vue d'un document ou élément à l'utilisateur. Le volet de tâches n'est visible que lorsque la fenêtre associée est visible. Toutes les applications n'utilisent cependant pas les fenêtres frame de document de la même façon.
Les groupes d'applications suivants ont des exigences différentes en termes de développement :
Outlook
Word et InfoPath
Excel et PowerPoint
Outlook
Lorsque vous créez un volet de tâches personnalisé pour Outlook, celui-ci est associé à une fenêtre Explorateur ou Inspecteur spécifique. Les fenêtres Explorateur affichent le contenu d'un dossier, tandis que les fenêtres Inspecteur affichent un élément tel qu'un message électronique ou une tâche.
Pour afficher un volet de tâches personnalisé avec plusieurs fenêtres Explorateur ou Inspecteur, vous devez créer une nouvelle instance de ce volet lorsqu'une fenêtre Explorateur ou Inspecteur apparaît. Pour cela, gérez un événement qui se déclenche lorsqu'une fenêtre Explorateur ou Inspecteur est créée, puis créez le volet de tâches dans le gestionnaire d'événements. Vous pouvez également gérer des événements Explorateur et Inspecteur pour masquer ou afficher des volets de tâches en fonction de la fenêtre visible.
Pour associer le volet de tâches à un Explorateur ou un Inspecteur spécifique, utilisez la méthode CustomTaskPaneCollection.Add(UserControl, String, Object) pour créer le volet de tâches, puis passez l'objet Explorer ou Inspector au paramètre window. Pour plus d'informations sur la création de volets de tâches personnalisés, consultez Vue d'ensemble des volets de tâches personnalisés.
Pour une procédure pas à pas expliquant comment créer un volet de tâches pour chaque message électronique ouvert, consultez Procédure pas à pas : affichage de volets de tâches personnalisés avec des messages électroniques dans Outlook.
Événements Outlook
Pour analyser l'état des fenêtres Explorateur, vous pouvez gérer les événements Explorateur suivants :
Pour analyser l'état des fenêtres Inspecteur, vous pouvez gérer les événements Inspecteur suivants :
Empêcher plusieurs instances d'un volet de tâches personnalisé dans Outlook
Pour éviter que les fenêtres Outlook affichent plusieurs instances d'un volet de tâches personnalisé, supprimez explicitement le volet de tâches personnalisé de la collection CustomTaskPanes de la classe ThisAddIn lors de la fermeture de chaque fenêtre. Appelez la méthode Remove dans un événement qui est déclenché lorsqu'une fenêtre est fermée, tel que ExplorerEvents_10_Event.Close ou InspectorEvents_10_Event.Close.
Si vous ne supprimez pas explicitement le volet de tâches personnalisé, les fenêtres Outlook risquent d'afficher plusieurs instances de ce volet. Parfois, Outlook recycle des fenêtres, et ces fenêtres recyclées conservent des références à tout volet de tâches personnalisé qui pouvait leur être associé.
Word et InfoPath
Word et InfoPath affichent chaque document dans une fenêtre frame de document différente. Lorsque vous créez un volet de tâches personnalisé pour ces applications, celui-ci est associé à un document spécifique uniquement. Si l'utilisateur ouvre un document différent, le volet de tâches personnalisé est masqué jusqu'à ce que le document antérieur soit à nouveau visible.
Pour afficher un volet de tâches personnalisé avec plusieurs documents, créez une nouvelle instance de ce volet lorsque l'utilisateur crée un document ou ouvre un document existant. Pour ce faire, gérez des événements qui se déclenchent lorsqu'un document est créé ou ouvert, puis créez le volet de tâches dans les gestionnaires d'événements. Vous pouvez également gérer des événements de document pour masquer ou afficher des volets de tâches en fonction du document visible.
Pour associer le volet de tâches à une fenêtre de document spécifique, utilisez la méthode CustomTaskPaneCollection.Add(UserControl, String, Object) pour créer le volet de tâches, puis passez un Microsoft.Office.Interop.Word.Window (pour Word) ou un Microsoft.Office.Interop.InfoPath.WindowObject (pour InfoPath) au paramètre window. Pour plus d'informations sur la création de volets de tâches personnalisés, consultez Vue d'ensemble des volets de tâches personnalisés.
Événements Word
Vous pouvez gérer les événements suivants pour surveiller l'état de fenêtres de document dans Word :
Événements InfoPath
Vous pouvez gérer les événements suivants pour surveiller l'état de fenêtres de document dans InfoPath :
Excel et PowerPoint
Excel et PowerPoint créent une fenêtre frame de document pour tous les documents (autrement dit, pour les classeurs et les présentations). Lorsque vous créez un volet de tâches personnalisé dans ces applications, celui-ci est disponible pour chaque document ouvert dans l'application. Aucun travail supplémentaire de votre part n'est requis pour garantir l'affichage du volet de tâches pour chaque document.
Cependant, en fonction du document actif, vous pouvez souhaiter masquer ou afficher le volet de tâches ou encore afficher des éléments de l'interface utilisateur ou des données différents dans le volet de tâches. Pour ce faire, gérez des événements qui se déclenchent lorsqu'un document est créé, ouvert ou activé, puis mettez le volet de tâches à jour dans les gestionnaires d'événements.
Événements Excel
Vous pouvez gérer les événements suivants pour surveiller l'état de classeurs dans Excel :
Événements PowerPoint
Vous pouvez gérer les événements suivants pour surveiller l'état de présentations dans PowerPoint :
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterNewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterPresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.NewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.PresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowActivate
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowDeactivate
Exemple
L'exemple de code suivant explique comment masquer ou afficher un volet de tâches personnalisé dans un gestionnaire d'événements pour l'événement WorkbookActivate dans un complément Excel. Lorsque tous les classeurs sont activés, le volet de tâches n'est visible que si le classeur est appelé SalesData.xls ; sinon, il est masqué. Pour exécuter cet exemple, remplacez le gestionnaire d'événements ThisAddIn_Startup par défaut généré par Visual Studio Tools pour Office dans la classe ThisAddIn avec le code suivant. Cet exemple part du principe que votre projet inclut un UserControl appelé UserControl1.
Dim myUserControl As UserControl1
Dim myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Startup
myUserControl = New UserControl1()
myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl, "Sales Task Pane")
End Sub
Private Sub Application_WorkbookActivate(ByVal Wb As Excel.Workbook) _
Handles Application.WorkbookActivate
If Wb.Name = "SalesData.xlsx" Then
myCustomTaskPane.Visible = True
Else
myCustomTaskPane.Visible = False
End If
End Sub
private UserControl1 myUserControl;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(
Application_WorkbookActivate);
myUserControl = new UserControl1();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl, "Sales Task Pane");
}
void Application_WorkbookActivate(Excel.Workbook Wb)
{
if (Wb.Name == "SalesData.xlsx")
myCustomTaskPane.Visible = true;
else
myCustomTaskPane.Visible = false;
}
Voir aussi
Tâches
Comment : ajouter un volet de tâches personnalisé à une application
Comment : afficher des volets de tâches personnalisés avec des messages électroniques dans Outlook
Procédure pas à pas : synchronisation d'un volet de tâches personnalisé avec un bouton dans le ruban