Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen
Die Office-Entwicklungstools in Visual Studio stellen Klassen und Designer bereit, die viele Implementierungsdetails behandeln, wenn Sie mit ihnen benutzerdefinierte Aufgabenbereiche, angepasste Menübänder und Outlook-Formularbereiche in einem Add-In auf Anwendungsebene erstellen. Sie können die Erweiterungsschnittstelle für jede Funktion jedoch auch selbst implementieren, wenn Sie besondere Anforderungen haben.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Microsoft Office 2010 und 2007 Microsoft Office System. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
Übersicht über Erweiterungsschnittstellen
Microsoft Office definiert einen Satz von Erweiterungsschnittstellen, den COM-Add-Ins implementieren können, um bestimmte Funktionen, z. B. das Menüband, anzupassen. Diese Schnittstellen geben volle Kontrolle über die Funktionen bereit, auf die sie Zugriff gewähren. Die Implementierung dieser Schnittstellen erfordert jedoch Kenntnisse der COM-Interoperabilität in verwaltetem Code. In einigen Fällen ist das Programmiermodell dieser Schnittstellen auch für Entwickler nicht intuitiv, die mit .NET Framework vertraut sind.
Wenn Sie mit den Office-Projektvorlagen in Visual Studio ein Add-In erstellen, müssen Sie die Erweiterungsschnittstellen nicht implementieren, um Funktionen wie das Menüband anzupassen. Diese Schnittstellen werden von der Visual Studio Tools for Office-Laufzeit implementiert. Stattdessen können Sie intuitivere Klassen und von Visual Studio bereitgestellte Designer verwenden. Sie können Erweiterungsschnittstellen aber auch direkt im Add-In implementieren, wenn Sie möchten.
Weitere Informationen über die Klassen und Designer, die Visual Studio für diese Funktionen bereitstellt, finden Sie unter Übersicht über benutzerdefinierte Aufgabenbereiche, Multifunktionsleisten-Designer und Erstellen von Outlook-Formularbereichen.
In einem Add-In implementierbare Erweiterungsschnittstellen
In der folgenden Tabelle werden die implementierbaren Erweiterungsschnittstellen und die Anwendungen, die sie unterstützen, aufgeführt.
Schnittstelle |
Beschreibung |
Anwendungen |
---|---|---|
Implementieren Sie diese Schnittstelle, um die Benutzeroberfläche des Menübands anzupassen.
Hinweis
Sie können einem Projekt ein Element Menüband (XML) hinzufügen, um eine Standardimplementierung von Microsoft.Office.Core.IRibbonExtensibility im Add-In zu generieren.Weitere Informationen finden Sie unter Multifunktionsleisten-XML.
|
Excel 2007 und Excel 2010 InfoPath 2010 Outlook 2007 und Outlook 2010 PowerPoint 2007 und PowerPoint 2010 Project 2010 Visio 2010 Word 2007 und Word 2010 |
|
Implementieren Sie diese Schnittstelle, um einen benutzerdefinierten Aufgabenbereich zu erstellen. |
Excel 2007 und Excel 2010 Outlook 2007 und Outlook 2010 PowerPoint 2007 und PowerPoint 2010 Word 2007 und Word 2010 |
|
Implementieren Sie diese Schnittstelle, um einen Outlook-Formularbereich zu erstellen. |
Outlook 2007 und Outlook 2010 |
Es gibt noch andere Erweiterungsschnittstellen, die in Microsoft Office definiert werden, z. B. Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider und Microsoft.Office.Core.SignatureProvider. In Visual Studio wird das Implementieren dieser Schnittstellen in einem mit den Office-Projektvorlagen erstellten Add-In nicht unterstützt.
Verwenden von Erweiterungsschnittstellen
Um ein Feature der Benutzeroberfläche mit einer Erweiterungsschnittstelle anzupassen, implementieren Sie die entsprechende Schnittstelle im Add-In-Projekt. Überschreiben Sie anschließend die RequestService-Methode, um eine Instanz der Klasse zurückzugeben, die die Schnittstelle implementiert.
Eine Beispielanwendung, die veranschaulicht, wie die Microsoft.Office.Core.IRibbonExtensibility-, Microsoft.Office.Core.ICustomTaskPaneConsumer- und Microsoft.Office.Interop.Outlook.FormRegionStartup-Schnittstellen in einem Add-In für Outlook implementiert werden, finden Sie im UI-Manager-Beispiel unter Office-Entwicklungsbeispiele.
Beispiel für das Implementieren einer Erweiterungsschnittstelle
Im folgenden Codebeispiel wird eine einfache Implementierung der Microsoft.Office.Core.ICustomTaskPaneConsumer-Schnittstelle veranschaulicht, um einen benutzerdefinierten Aufgabenbereich zu erstellen. In diesem Beispiel werden zwei Klassen definiert:
Die TaskPaneHelper-Klasse implementiert Microsoft.Office.Core.ICustomTaskPaneConsumer, um einen benutzerdefinierten Aufgabenbereich zu erstellen und anzuzeigen.
Die TaskPaneUI-Klasse stellt die Benutzeroberfläche des Aufgabenbereichs zur Verfügung. Die Attribute für die TaskPaneUI-Klasse machen die Klasse für COM sichtbar, sodass Microsoft Office-Anwendungen die Klasse erkennen können. In diesem Beispiel besteht die Benutzeroberfläche aus einem leeren UserControl, Sie können jedoch durch Ändern des Codes Steuerelemente hinzufügen.
Tipp
Um die TaskPaneUI-Klasse für COM verfügbar zu machen, müssen Sie auch die Register for COM Interop-Eigenschaft für das Projekt festlegen. Weitere Informationen finden Sie unter Gewusst wie: Registrieren einer Komponente für 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
{
}
Weitere Informationen zum Implementieren von Microsoft.Office.Core.ICustomTaskPaneConsumer finden Sie unter Erstellen benutzerdefinierter Aufgabenbereiche in 2007 Office System in der Dokumentation zu Microsoft Office.
Beispiel für das Überschreiben der RequestService-Methode
Im folgenden Codebeispiel wird veranschaulicht, wie die RequestService-Methode überschrieben wird, um eine Instanz der TaskPaneHelper-Klasse aus dem vorigen Codebeispiel zurückzugeben. Der Wert des serviceGuid-Parameters wird überprüft, um zu bestimmen, welche Erweiterungsschnittstelle angefordert wird. Anschließend wird ein Objekt zurückgegeben, das diese Schnittstelle implementiert.
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);
}
Siehe auch
Aufgaben
Gewusst wie: Erstellen von Office-Projekten in Visual Studio
Konzepte
Aufrufen von Code in Add-Ins auf Anwendungsebene von anderen Office-Projektmappen
Architektur von Add-Ins auf Anwendungsebene
Weitere Ressourcen
Beispiele und exemplarische Vorgehensweisen für die Programmierung mit Office