Úprava funkce uživatelského rozhraní pomocí rozšíření rozhraní
Vývojové nástroje sady Office v sadě Visual Studio poskytují třídy a návrhářů, které při použití v doplňku úrovni aplikace vytvořit vlastní podokna úloh, vlastní nastavení pásu karet a oblastí formulářů aplikace Outlook zpracovávat mnoho podrobnosti implementace.Však můžete implementovat Rozšiřitelnost rozhraní pro každou funkci sami, pokud máte zvláštní požadavky.
Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni aplikace v systému Microsoft Office 2013 a Microsoft Office 2010. Další informace naleznete v tématu Funkce aplikace Office a typ projektu.
Přehled rozšiřitelnosti rozhraní
Microsoft Office definuje sadu rozhraní rozšíření, které doplňky modelu COM lze přizpůsobit určité funkce, například na pásu karet.Tato rozhraní poskytují funkce, které poskytují přístup k úplné řízení.Implementace těchto rozhraní však vyžaduje určitou znalost COM interoperability ve spravovaném kódu.V některých případech programovací model těchto rozhraní je také intuitivní pro vývojáře, kteří jsou zvyklí na rozhraní.NET Framework.
Když vytvoříte pomocí šablony projektu Visual Studio-v, nemají implementovat rozhraní rozšiřitelnosti upravit funkce jako na pásu karet.Visual Studio Tools for Office runtime Těchto rozhraní implementuje.Místo toho můžete použít více intuitivní třídy a návrháři poskytované Visual Studio.Nicméně můžete stále implementovat rozšiřitelnost rozhraní přímo v doplňku Pokud chcete.
Další informace o třídách a návrhářů, které tyto funkce poskytuje Visual Studio, viz Vlastní podokna úloh, Návrhář pásu karet, a Vytvoření oblasti formulářů aplikace Outlook.
Rozšiřitelnost rozhraní lze implementovat v doplňku
Následující tabulka uvádí rozšiřitelnost rozhraní, které mohou implementovat a aplikací, které je podporují.
Rozhraní |
Description |
Aplikace |
---|---|---|
Implementujte toto rozhraní přizpůsobit uživatelské rozhraní pásu karet.
Poznámka
Můžete přidat Pásu karet (XML) položky projektu vygenerovat výchozí Microsoft.Office.Core.IRibbonExtensibility implementace v doplňku.Další informace naleznete v tématu Pás karet XML.
|
Excel 2013 InfoPath 2013 Outlook 2013 PowerPoint 2013 Project 2013 Visio 2013 Word 2013 Aplikace Excel 2010 Aplikace InfoPath 2010 Outlook 2010 Aplikace PowerPoint 2010 Aplikace Project 2010 Visio 2010 Word 2010 |
|
Implementujte toto rozhraní vytvořit vlastní podokno úloh. |
Excel 2013 Outlook 2013 PowerPoint 2013 Word 2013 Aplikace Excel 2010 Outlook 2010 Aplikace PowerPoint 2010 Word 2010 |
|
Implementujte toto rozhraní vytvořit oblasti formuláře aplikace Outlook. |
Outlook 2013 Outlook 2010 |
Existuje několik dalších rozšiřitelnost rozhraní, které jsou definovány jako například Microsoft Office Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, a Microsoft.Office.Core.SignatureProvider.Visual Studio nepodporuje provádění těchto rozhraní v doplňku vytvořené pomocí šablony projektu.
Pomocí rozšíření rozhraní
Přizpůsobit uživatelské rozhraní funkce pomocí rozšíření rozhraní, implementujte rozhraní vhodné přidat do projektu.Potom přepsat RequestService metoda vrátí instanci třídy, která implementuje rozhraní.
Pro ukázku aplikace, která ukazuje, jak implementovat Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, a Microsoft.Office.Interop.Outlook.FormRegionStartup rozhraní přidat v aplikaci Outlook, viz ukázka uživatelského rozhraní správce v Ukázky vývoje Office.
Příklad implementace rozšiřitelnost rozhraní
Následující příklad kódu ukazuje jednoduchou implementaci Microsoft.Office.Core.ICustomTaskPaneConsumer rozhraní vytvořit vlastní podokno úloh.Tento příklad definuje dvě třídy:
TaskPaneHelper Implementuje třída Microsoft.Office.Core.ICustomTaskPaneConsumer vytvoření a zobrazení vlastní podokno úloh.
TaskPaneUI Třída poskytuje uživatelské rozhraní podokno úloh.Atributy TaskPaneUI třídy zviditelnit třídy COM, který umožňuje zjistit třídu aplikace Microsoft Office.V tomto příkladu je uživatelské rozhraní prázdné UserControl, ale můžete přidat ovládací prvky úpravy kódu.
[!POZNÁMKA]
Vystavit TaskPaneUI třídy COM, musíte také nastavit Register for COM Interop vlastnost projektu.Další informace naleznete v tématu Správa vlastností kompilace.
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
{
}
Další informace o implementaci Microsoft.Office.Core.ICustomTaskPaneConsumer, viz Vytváření vlastních podoken v systému Office 2007 v dokumentaci Microsoft Office.
Příklad přepsání metody RequestService
Následující příklad kódu ukazuje, jak přepsat RequestService metoda vrátí instanci TaskPaneHelper třídy z předchozího příkladu kódu.Kontroluje hodnotu serviceGuid parametr určit rozhraní, které jsou požadovány a vrátí objekt, který implementuje rozhraní.
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);
}
Viz také
Úkoly
Jak: vytvoření Office projekty v aplikaci Visual Studio
Koncepty
Volací kód v úrovni aplikace doplňky z dalších řešení sady Office
Architektura doplňků úroveň aplikace