Cet article décrit étape par étape comment modifier les wrappers de classe pour Microsoft Office 2003 Web Components. Il explique ensuite comment régénérer les wrappers de classe pour pouvoir gérer leurs événements dans une application créée à l'aide de Microsoft Visual Studio .NET.
Par défaut, les wrappers de classe générés par Microsoft Visual Studio .NET ne vous permettent pas de gérer les événements pour les composants Web Office 2003 suivants :
- Chart
- Spreadsheet
- PivotTable
Pour gérer les événements pour ces composants, vous pouvez modifier le code source pour les wrappers de classe et recompiler le code.
Introduction
Microsoft Visual Studio .NET génère une classe
event listener qui implémente une interface
event. Cette classe
event listener est passée à Office Web Components (OWC). Office Web Components appelle ensuite la méthode
QueryInterface pour l'interface
IDispatch au lieu d'appeler l'interface
event. Cependant, l'interface
IDispatch pour la classe générée ne contient pas d'identificateurs DISPID (DISpatch IDentifier) pour les événements.
Pour résoudre ce problème, vous pouvez marquer la classe générée en utilisant la valeur
ClassInterfaceType.None pour forcer COM Interop à retourner
IDispatch pour l'interface et non pour la classe. L'interface
IDispatch contient les identificateurs DISPID pour les événements.
Procédure à suivre pour modifier et régénérer les wrappers de classe
- Démarrez l'invite de commandes Visual Studio .NET.
- À l'invite de commandes, procédez comme suit :
- Créez un dossier nommé owc11, puis passez à ce répertoire :
md c:\owc11
cd c:\owc11
-
Générez le code source dans C# pour le wrapper Microsoft Windows Forms :
aximp "c:\program files\common files\microsoft shared\web components\11\owc11.dll" /source
-
Supprimez l'assembly généré AxOWC11.dll :
del c:\owc11\axowc11.dll
- Dans un éditeur de texte tel que le Bloc-notes, ouvrez C:\OWC11\AxOWC11.cs.
-
Ajoutez [ToolboxItem(true)] à la classe générée pour les composants Chart, Spreadsheet et PivotTable, comme dans les exemples suivants :
Composant Chart [System.ComponentModel.ToolboxItem(true)]
public class AxChartSpace : System.Windows.Forms.AxHost {
...
} Composant Spreadsheet [System.ComponentModel.ToolboxItem(true)]
public class AxSpreadsheet : System.Windows.Forms.AxHost {
...
} Composant PivotTable [System.ComponentModel.ToolboxItem(true)]
public class AxPivotTable : System.Windows.Forms.AxHost {
...
} -
Marquez les classes d'événements comme ClassInterfaceType.None, comme dans les exemples suivants :
Composant Chart [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxChartSpaceEventMulticaster : OWC11.IChartEvents {
...
} Composant Spreadsheet [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink {
...
} Composant PivotTable [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents {
...
} - Enregistrez vos modifications dans AxOWC11.cs.
-
À l'invite de commandes Visual Studio .NET, procédez comme suit :
- Ajoutez C:\Program Files\Microsoft.NET\Primary Interop Assemblies à votre variable d'environnement LIB :
set lib=c:\program files\microsoft.net\primary interop assemblies;%path%
-
Copiez Microsoft.Office.Interop.OWC11.dll et MSComCtl.dll du GAC où sont installés les assemblys PIA (Primary Interop Assembly) Microsoft Office 2003 :
copy %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll
copy %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll
-
Compilez le fichier source, AxOWC11.cs :
csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
Remarque Le message d'erreur CS0108 suivant s'affiche :Le mot clé new est requis
Vous pouvez ignorer cette erreur.
- Démarrez Visual Studio .NET.
-
Ajoutez le fichier que vous venez de compiler, AxOWC11.dll, à la Boîte à outils :
-
Dans le menu Outils, cliquez sur Personnaliser la boîte à outils (dans Visual Studio .NET 2002) ou sur Ajouter/Supprimer des éléments de la boîte à outils (dans Visual Studio .NET 2003), puis cliquez sur l'onglet Composants .NET Framework.
-
Sous l'onglet Composants .NET Framework, cliquez sur Parcourir.
-
Dans la zone de texte Nom de fichier, tapez c:\owc11\axowc11.dll. Cliquez sur Ouvrir.
-
Cliquez sur OK pour fermer la boîte de dialogue Personnaliser la boîte à outils.
Lorsque vous créez un projet Microsoft Visual Basic .NET ou un projet Microsoft Visual C# .NET, notez que la liste de contrôles sous l'onglet
Général dans la
Boîte à outils contient les contrôles
AxChartSpace,
AxPivotTable et
AxSpreadsheet. Vous pouvez désormais ajouter ces composants à vos formulaires.
Pour plus d'informations sur la gestion des événements pour Office XP Web Components à l'aide de Visual Studio .NET, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
328275
(http://support.microsoft.com/kb/328275/
)
COMMENT FAIRE : Gérer les événements pour Office Web Components dans Visual Studio .NET