Anpassen von Features der Benutzeroberfläche mithilfe von Erweiterungsschnittstellen
Die Office-Entwicklungstools in Visual Studio stellen Klassen und Designer, die viele Implementierungsdetails behandeln, wenn Sie sie verwenden, um 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 2013 und Microsoft Office 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
Übersicht über Erweiterungsschnittstellen
Microsoft Office definiert einen Satz von Erweiterungsschnittstellen, die COM-Add-Ins implementieren können, um bestimmte Funktionen anpassen, wie das Menüband.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 ein Add-In erstellen, indem Sie die Office-Projektvorlagen in Visual Studio verwenden, müssen Sie die Erweiterungsschnittstellen nicht implementieren, um Funktionen wie das Menüband anzupassen.Diese Schnittstellen werden von der Visual Studio-Tools für 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 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 |
Description |
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 2013 InfoPath 2013 Outlook 2013 PowerPoint 2013 Project 2013 Visio 2013 Word 2013 Excel 2010 InfoPath 2010 Outlook 2010 PowerPoint 2010 Project 2010 Visio 2010 Word 2010 |
|
Implementieren Sie diese Schnittstelle, um einen benutzerdefinierten Aufgabenbereich zu erstellen. |
Excel 2013 Outlook 2013 PowerPoint 2013 Word 2013 Excel 2010 Outlook 2010 PowerPoint 2010 Word 2010 |
|
Implementieren Sie diese Schnittstelle, um einen Outlook-Formularbereich zu erstellen. |
Outlook 2013 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.
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.Weitere Informationen finden Sie unter Verwalten von Kompilierungseigenschaften.
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 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