Anpassen von Benutzeroberflächenfeatures mithilfe von Erweiterbarkeitsschnittstellen

Die Office-Entwicklungstools in Visual Studio umfassen Klassen und Designer, mit denen viele Implementierungsdetails behandelt werden können, wenn Sie sie zum Erstellen von benutzerdefinierten Aufgabenbereichen, Menübandanpassungen und Outlook-Formularbereichen in einem VSTO-Add-In verwenden. Sie können jedoch zudem die Erweiterbarkeitsschnittstelle manuell für jede Funktion implementieren, wenn Sie über besondere Anforderungen verfügen.

Gilt für: Die Informationen in diesem Thema betreffen VSTO-Add - in-Projekte. Weitere Informationen finden Sie unter verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Übersicht über Erweiterbarkeitsschnittstellen

Microsoft Office definiert eine Gruppe von Erweiterbarkeitsschnittstellen, die COM-VSTO-Add-Ins implementieren können, um bestimmte Funktionen wie das Menüband anzupassen. Diese Schnittstellen bieten die vollständige Kontrolle über die Funktionen, auf die sie den Zugriff gewähren. Die Implementierung dieser Schnittstellen erfordert jedoch das entsprechende Know-how in Bezug auf die COM-Interoperabilität in verwalteten Code. In einigen Fällen ist das Programmierungsmodell von diesen Schnittstellen auch nicht intuitiv für Entwickler, die an .NET Framework gewöhnt sind.

Wenn Sie ein VSTO-Add-In erstellen, indem Sie die Office-Projektvorlagen in Visual Studio verwenden, müssen Sie nicht die Erweiterbarkeitsschnittstellen implementieren, um Funktionen wie das Menüband anzupassen. Die Visual Studio-Tools für Office-Laufzeit implementiert diese Schnittstellen für Sie. Sie können stattdessen intuitivere Klassen und Designer verwenden, die Visual Studio bereitstellt. Sie können die Erweiterbarkeitsschnittstellen bei Bedarf jedoch direkt in Ihr VSTO-Add-In implementieren.

Weitere Informationen zu den Klassen und Designern, die Visual Studio für diese Features bietet, finden Sie unter Benutzerdefinierte Aufgabenbereiche, Menüband-Designer und Erstellen Outlook Formularbereich.

Erweiterbarkeitsschnittstellen, die Sie in einem VSTO-Add-In implementieren können

Die folgende Tabelle führt die Erweiterbarkeitsschnittstellen auf, die Sie implementieren können, sowie die Anwendungen, die sie unterstützen.

Schnittstelle Beschreibung Anwendungen
IRibbonExtensibility Implementieren Sie diese Schnittstelle zum Anpassen der Menüband-Benutzeroberfläche. Hinweis: Sie können einem Projekt ein Menübandelement (XML) hinzufügen, um eine Standardimplementierung IRibbonExtensibility im VSTO-In zu generieren. Weitere Informationen finden Sie unter Ribbon XML. Excel

InfoPath 2013

InfoPath 2010

Outlook

PowerPoint

Project

Visio

Word
ICustomTaskPaneConsumer Implementieren Sie diese Schnittstelle zum Erstellen eines benutzerdefinieren Aufgabenbereichs. Excel

Outlook

PowerPoint

Word
FormRegionStartup Implementieren Sie diese Schnittstelle zum Erstellen eines Outlook-Formularbereichs. Outlook

Es gibt verschiedene andere Erweiterbarkeitsschnittstellen, die durch Microsoft Office definiert werden, beispielsweise IBlogExtensibility, EncryptionProviderund SignatureProvider. Visual Studio unterstützt nicht die Implementierung dieser Schnittstellen in einem VSTO-Add-In, das mithilfe der Office-Projektvorlagen erstellt wurde.

Verwenden von Erweiterbarkeitsschnittstellen

Implementieren Sie zum Anpassen einer Benutzeroberflächenfunktion mithilfe einer Erweiterbarkeitsschnittstelle die entsprechende Schnittstelle in Ihrem VSTO-Add-In-Projekt. Überschreiben Sie anschließend die Methode RequestService , um eine Instanz der Klasse zurückzugeben, die die Schnittstelle implementiert.

Eine Beispielanwendung, die veranschaulicht, wie die Schnittstellen , und in einem IRibbonExtensibility ICustomTaskPaneConsumer VSTO-Add-In für Outlook implementiert werden, finden Sie im FormRegionStartup UI Manager-Beispiel in Office Entwicklungsbeispielen.

Beispiel für die Implementierung einer Erweiterbarkeitsschnittstelle

Das folgende Codebeispiel veranschaulicht eine einfache Implementierung der ICustomTaskPaneConsumer -Schnittstelle zum Erstellen eines benutzerdefinierten Aufgabenbereichs. Im Beispiel werden zwei Klassen definiert:

  • Die TaskPaneHelper -Klasse implementiert ICustomTaskPaneConsumer zum Erstellen und Anzeigen eines benutzerdefinierten Aufgabenbereichs.

  • Die TaskPaneUI -Klasse stellt die Benutzeroberfläche des Aufgabenbereichs bereit. Die Attribute für die TaskPaneUI -Klasse machen die Klasse sichtbar für COM, wodurch Microsoft Office-Anwendungen die Klasse erkennen können. In diesem Beispiel ist die Benutzeroberfläche ein leeres UserControl. Sie können jedoch Steuerelemente hinzufügen, indem Sie den Code ändern.

    Hinweis

    Damit die TaskPaneUI -Klasse für COM verfügbar ist, müssen Sie zudem die Eigenschaft Für COM-Interop registrieren für das Projekt festlegen.

    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");
                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 finden Sie unter Erstellen benutzerdefinierter Aufgabenbereiche ICustomTaskPaneConsumer im 2007 Office-System in der Microsoft Office Dokumentation.

Beispiel für das Überschreiben der RequestService-Methode

Das folgende Codebeispiel veranschaulicht, wie die Methode RequestService überschrieben wird, um eine Instanz der Klasse TaskPaneHelper aus dem vorherigen Codebeispiel zurückzugeben. Es prüft die Werte des Parameters serviceGuid , um zu bestimmen, welche Schnittstelle angefordert wird, und gibt dann ein Objekt zurück, 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