Dostosowywanie funkcji interfejsu użytkownika przy użyciu interfejsów rozszerzalności
Narzędzia programistyczne pakietu Office w programie Visual Studio udostępniają 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 regionów formularzy programu Outlook w dodatku VSTO. Jednak można również zaimplementować interfejs rozszerzalności dla każdej funkcji samodzielnie, jeśli masz specjalne wymagania.
Dotyczy: informacje w tym temacie dotyczą projektów dodatków VSTO. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.
Pakiet Microsoft Office definiuje zestaw interfejsów rozszerzalności, które dodatki COM VSTO mogą implementować 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 wiedzy na temat współdziałania modelu 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ą przyzwyczajeni do programu .NET Framework.
Podczas tworzenia dodatku VSTO przy użyciu szablonów projektów pakietu Office w programie Visual Studio nie trzeba implementować interfejsów rozszerzalności, aby dostosować funkcje takie jak wstążka. Środowisko uruchomieniowe Visual Studio Tools dla pakietu Office implementuje te interfejsy. Zamiast tego można użyć bardziej intuicyjnych klas i projektantów udostępnianych przez program Visual Studio. Jednak nadal można zaimplementować interfejsy rozszerzalności bezpośrednio w dodatku VSTO, jeśli chcesz.
Aby uzyskać więcej informacji na temat klas i projektantów oferowanych przez program Visual Studio dla tych funkcji, zobacz Niestandardowe okienka zadań, Projektant wstążki i Tworzenie regionów formularzy programu Outlook.
Interfejsy rozszerzalności, które można zaimplementować w dodatku VSTO
W poniższej tabeli wymieniono interfejsy rozszerzalności, które można zaimplementować, oraz aplikacje, które je obsługują.
Interfejs | opis | Aplikacje |
---|---|---|
IRibbonExtensibility | Zaimplementuj ten interfejs, aby dostosować interfejs użytkownika wstążki. Uwaga: do projektu można dodać element wstążki (XML), aby wygenerować domyślną IRibbonExtensibility implementację w dodatku VSTO. Aby uzyskać więcej informacji, zobacz Plik XML wstążki. | Excel InfoPath 2013 InfoPath 2010 Outlook PowerPoint Project Visio Word |
ICustomTaskPaneConsumer | Zaimplementuj ten interfejs, aby utworzyć niestandardowe okienko zadań. | Excel Outlook PowerPoint Word |
FormRegionStartup | Zaimplementuj ten interfejs, aby utworzyć region formularza programu Outlook. | Outlook |
Istnieje kilka innych interfejsów rozszerzalności zdefiniowanych przez pakiet Microsoft Office, takich jak IBlogExtensibility, EncryptionProvideri SignatureProvider. Program Visual Studio nie obsługuje implementowania tych interfejsów w dodatku VSTO utworzonym przy użyciu szablonów projektów pakietu Office.
Korzystanie z interfejsów rozszerzalności
Aby dostosować funkcję interfejsu użytkownika przy użyciu interfejsu rozszerzalności, zaimplementuj odpowiedni interfejs w projekcie dodatku VSTO. Następnie przesłoń metodę RequestService , aby zwrócić wystąpienie klasy, która implementuje interfejs.
Aby zapoznać się z przykładową aplikacją, która pokazuje, jak zaimplementować IRibbonExtensibilityinterfejsy , ICustomTaskPaneConsumeri FormRegionStartup w dodatku VSTO dla programu Outlook, zobacz przykład menedżera interfejsu użytkownika w przykładach programowania pakietu 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 ICustomTaskPaneConsumer tworzenie i wyświetlanie niestandardowego okienka zadań.Klasa
TaskPaneUI
udostępnia interfejs użytkownika okienka zadań. Atrybuty klasyTaskPaneUI
sprawiają, że klasa jest widoczna dla modelu COM, co umożliwia aplikacja pakietu Office licationom firmy Microsoft odnajdywanie klasy. W tym przykładzie interfejs użytkownika jest pusty UserControl, ale możesz dodać kontrolki, modyfikując kod.Uwaga
Aby uwidocznić klasę
TaskPaneUI
com, należy również ustawić właściwość Register for COM Interop dla projektu.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 ICustomTaskPaneConsumerprogramu , zobacz Tworzenie niestandardowych okienek zadań w systemie Office 2007 w dokumentacji pakietu Microsoft Office.
Przykład zastępowania metody RequestService
Poniższy przykład kodu pokazuje, jak zastąpić metodę RequestService , aby zwrócić wystąpienie TaskPaneHelper
klasy z poprzedniego przykładu kodu. Sprawdza wartość parametru serviceGuid , aby określić, który interfejs jest żądany, a następnie zwraca obiekt, który implementuje ten interfejs.
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);
}