Freigeben über


Anpassen von UI-Features mithilfe von Erweiterbarkeitsschnittstellen

Die Office-Entwicklungstools in Visual Studio bieten Klassen und Designer, die viele Implementierungsdetails behandeln, wenn Sie sie zum Erstellen von benutzerdefinierten Aufgabenbereichen, Menübandanpassungen und Outlook-Formularbereichen in einem VSTO-Add-In verwenden. Sie können jedoch auch die Erweiterbarkeitsschnittstelle für jedes Feature selbst implementieren, wenn Sie spezielle Anforderungen haben.

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

Microsoft Office definiert eine Reihe von Erweiterbarkeitsschnittstellen, die COM VSTO-Add-Ins implementieren können, um bestimmte Features wie das Menüband anzupassen. Diese Schnittstellen bieten vollständige Kontrolle über die Features, auf die sie Zugriff bieten. Die Implementierung dieser Schnittstellen erfordert jedoch einige Kenntnisse der COM-Interoperabilität in verwaltetem Code. In einigen Fällen ist das Programmiermodell dieser Schnittstellen auch nicht intuitiv für Entwickler, die an .NET Framework gewöhnt sind.

Wenn Sie ein VSTO-Add-In mithilfe der Office-Projektvorlagen in Visual Studio erstellen, müssen Sie die Erweiterbarkeitsschnittstellen nicht implementieren, um Features wie das Menüband anzupassen. Die Visual-Studio-Tools-für-Office-Laufzeitumgebung implementiert diese Schnittstellen für Sie. Stattdessen können Sie intuitivere Klassen und Designer verwenden, die von Visual Studio bereitgestellt werden. Sie können die Erweiterbarkeitsschnittstellen jedoch weiterhin direkt in Ihrem VSTO-Add-In implementieren, wenn Sie möchten.

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

In der folgenden Tabelle sind die Erweiterbarkeitsschnittstellen aufgeführt, die Sie implementieren können, und die Anwendungen, die sie unterstützen.

Schnittstelle Description Anträge
IRibbonExtensibility Implementieren Sie diese Schnittstelle, um die Menüband-Benutzeroberfläche anzupassen. Anmerkung: Sie können einem Projekt ein Ribbon (XML)-Element hinzufügen, um in Ihrem VSTO-Add-In eine Standardimplementierung IRibbonExtensibility zu generieren. Weitere Informationen finden Sie unter Menüband-XML. Excel

InfoPath 2013

InfoPath 2010

Aussicht

PowerPoint

Projekt

Visio

Wort
ICustomTaskPaneConsumer Implementieren Sie diese Schnittstelle, um einen benutzerdefinierten Aufgabenbereich zu erstellen. Excel

Aussicht

PowerPoint

Wort
FormRegionStartup Implementieren Sie diese Schnittstelle, um einen Outlook-Formularbereich zu erstellen. Aussicht

Es gibt mehrere andere Erweiterbarkeitsschnittstellen, die von Microsoft Office definiert werden, z.B. IBlogExtensibility, EncryptionProvider und SignatureProvider. Visual Studio unterstützt die Implementierung dieser Schnittstellen in einem mit den Office-Projektvorlagen erstellten VSTO-Add-In nicht.

Verwenden von Erweiterbarkeitsschnittstellen

Um ein Ui-Feature mithilfe einer Erweiterbarkeitsschnittstelle anzupassen, implementieren Sie die entsprechende Schnittstelle in Ihrem VSTO-Add-In-Projekt. Überschreiben Sie dann die RequestService Methode, um eine Instanz der Klasse zurückzugeben, die die Schnittstelle implementiert.

Um eine Beispielanwendung zu sehen, die veranschaulicht, wie Sie die Schnittstellen IRibbonExtensibility, ICustomTaskPaneConsumer und FormRegionStartup in einem VSTO-Add-In für Outlook implementieren, sehen Sie sich das UI-Manager-Beispiel in den Office-Entwicklungsbeispielen an.

Beispiel für die Implementierung einer Erweiterbarkeitsschnittstelle

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

  • Die TaskPaneHelper Klasse implementiert ICustomTaskPaneConsumer , um einen benutzerdefinierten Aufgabenbereich zu erstellen und anzuzeigen.

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

    Hinweis

    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.

    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

Im folgenden Codebeispiel wird veranschaulicht, wie die Methode RequestService überschrieben wird, um eine Instanz der Klasse TaskPaneHelper aus dem vorherigen Codebeispiel zurückzugeben. Er überprüft den Wert des parameter 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);
}