Anpassen von UI-Features 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 gelten für VSTO-Add-In-Projekte. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

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 bereitstellt, finden Sie unter "Benutzerdefinierte Aufgabenbereiche", "Menüband-Designer" und "Erstellen von Outlook-Formularbereichen".

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 in Ihrem VSTO-Add-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 das IRibbonExtensibilityICustomTaskPaneConsumerAdd-In VSTO und FormRegionStartup schnittstellen in einem VSTO-Add-In für Outlook implementiert werden, finden Sie im 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 : 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 zur Implementierung ICustomTaskPaneConsumerfinden Sie unter Erstellen von benutzerdefinierten Aufgabenbereichen im Office 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.

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);
}