Freigeben über


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

Microsoft.Office.Core.IRibbonExtensibility

Implementieren Sie diese Schnittstelle, um die Benutzeroberfläche des Menübands anzupassen.

HinweisHinweis
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

Microsoft.Office.Core.ICustomTaskPaneConsumer

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

Microsoft.Office.Interop.Outlook.FormRegionStartup

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

Programmieren von Add-Ins auf Anwendungsebene

Entwickeln von Office-Projektmappen