Dostosowywanie funkcji interfejsu użytkownika przy użyciu interfejsów rozszerzalności

Narzędzia Office deweloperskie w programie Visual Studio oferują klasy i projektantów, które obsługują wiele szczegółów implementacji podczas ich używania do tworzenia niestandardowych okienek zadań, dostosowań wstążki i Outlook obszarów formularzy w dodatku VSTO. Można jednak również samodzielnie zaimplementować interfejs rozszerzalności dla każdej funkcji, jeśli masz specjalne wymagania.

Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów dodatku VSTO - . Aby uzyskać więcej informacji, zobacz dostępność funkcji według aplikacji pakietu Office i typów projektów.

Omówienie interfejsów rozszerzalności

Microsoft Office definiuje zestaw interfejsów rozszerzalności, które można zaimplementować VSTO COM w celu dostosowania niektórych funkcji, takich jak wstążka. Te interfejsy zapewniają pełną kontrolę nad funkcjami, do których zapewniają dostęp. Jednak implementacja tych interfejsów wymaga pewnej znajomości współdziałania COM w kodzie zarządzanym. W niektórych przypadkach model programowania tych interfejsów nie jest również intuicyjny dla deweloperów, którzy są przywykli do .NET Framework.

Podczas tworzenia dodatku VSTO przy użyciu szablonów projektów programu Office w programie Visual Studio nie trzeba implementować interfejsów rozszerzalności w celu dostosowania funkcji, takich jak wstążka. Interfejs Visual Studio Tools for Office Runtime implementuje te interfejsy za Ciebie. Zamiast tego można używać bardziej intuicyjnych klas i projektantów dostarczanych przez Visual Studio. Można jednak nadal implementować interfejsy rozszerzalności bezpośrednio w VSTO, jeśli chcesz.

Aby uzyskać więcej informacji o klasach i projektantach, które Visual Studio dla tych funkcji, zobacz Niestandardowe okienka zadań,Projektant wstążkii Tworzenie Outlook obszarów formularzy.

Interfejsy rozszerzalności, które można zaimplementować w VSTO dodatku

W poniższej tabeli wymieniono interfejsy rozszerzalności, które można zaimplementować, oraz aplikacje, które je obsługują.

Interfejs Opis Aplikacje
IRibbonExtensibility Zaim implementuj ten interfejs, aby dostosować interfejs użytkownika wstążki. Uwaga: Element wstążki (XML) można dodać do projektu, aby wygenerować domyślną implementację w VSTO IRibbonExtensibility dodatku. Aby uzyskać więcej informacji, zobacz Xml wstążki. Excel

InfoPath 2013

InfoPath 2010

Outlook

PowerPoint

Project

Visio

Word
ICustomTaskPaneConsumer Zaim implementuj ten interfejs, aby utworzyć niestandardowe okienko zadań. Excel

Outlook

PowerPoint

Word
FormRegionStartup Zaim implementuj ten interfejs, aby utworzyć Outlook formularza. Outlook

Istnieje kilka innych interfejsów rozszerzalności, które są definiowane przez Microsoft Office, takie jak IBlogExtensibility , EncryptionProvider i SignatureProvider . Visual Studio nie obsługuje implementowania tych interfejsów w dodatku VSTO utworzonym przy użyciu Office szablonów projektów.

Korzystanie z interfejsów rozszerzalności

Aby dostosować funkcję interfejsu użytkownika przy użyciu interfejsu rozszerzalności, zaim implementuj odpowiedni interfejs w VSTO projektu dodatku. Następnie zastąp metodę RequestService , aby zwrócić wystąpienie klasy, która implementuje interfejs.

Przykładową aplikację, która pokazuje, jak zaimplementować interfejsy , i w dodatku VSTO dla programu Outlook, zobacz Przykład menedżera interfejsu użytkownika w przykładach developmentowych programu IRibbonExtensibility ICustomTaskPaneConsumer FormRegionStartup Office.

Przykład implementacji interfejsu rozszerzalności

Poniższy przykład kodu przedstawia prostą implementację interfejsu ICustomTaskPaneConsumer w celu utworzenia niestandardowego okienka zadań. W tym przykładzie zdefiniowano dwie klasy:

  • Klasa TaskPaneHelper implementuje tworzenie ICustomTaskPaneConsumer i wyświetlanie niestandardowego okienka zadań.

  • Klasa TaskPaneUI udostępnia interfejs użytkownika okienka zadań. Atrybuty klasy sprawiają, że klasa jest widoczna dla com, co Microsoft Office TaskPaneUI odnajdywanie klasy przez aplikacje. W tym przykładzie interfejs użytkownika jest UserControl pusty, ale możesz dodać kontrolki, modyfikując kod.

    Uwaga

    Aby TaskPaneUI uwidocznić klasę dla com, należy również ustawić właściwość Register for COM Interop dla projektu.

    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
    {
    }
    

    Aby uzyskać więcej informacji na temat implementowania programu , zobacz Tworzenie niestandardowych okienek zadań w systemie Office ICustomTaskPaneConsumer 2007 w Microsoft Office dokumentacji.

Przykład zastępowania metody RequestService

W poniższym przykładzie kodu pokazano, jak przesłonić metodę w celu zwrócenia wystąpienia klasy RequestService TaskPaneHelper z poprzedniego przykładu kodu. Sprawdza wartość parametru serviceGuid, aby określić żądany interfejs, a następnie zwraca obiekt, który implementuje ten interfejs.

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

Zobacz też