Personalizar características de la interfaz de usuario mediante interfaces de extensibilidadCustomizing UI Features By Using Extensibility Interfaces

Las herramientas de desarrollo de Office en Visual Studio proporcionan clases y diseñadores que administran numerosos detalles de la implementación cuando se usan para crear paneles de tareas personalizados, personalizaciones de la cinta y regiones de formularios de Outlook en un complemento VSTO.The Office development tools in Visual Studio provide classes and designers that handle many implementation details when you use them to create custom task panes, ribbon customizations, and Outlook form regions in a VSTO Add-in. Sin embargo, también puede implementar la interfaz de extensibilidad para cada característica si tiene necesidades especiales.However, you can also implement the extensibility interface for each feature yourself if you have special requirements.

Aplicación: la información de este tema se aplica a los proyectos de complemento de VSTO.Applies to: The information in this topic applies to VSTO add-in projects. Para obtener más información, consulte Características disponibles por aplicación y tipo de proyecto de Office.For more information, see Features Available by Office Application and Project Type.

Introducción a las interfaces de extensibilidadOverview of Extensibility Interfaces

Microsoft Office define un conjunto de interfaces de extensibilidad que los complementos COM VSTO pueden implementar para personalizar determinadas características, como la cinta.Microsoft Office defines a set of extensibility interfaces that COM VSTO Add-ins can implement to customize certain features, such as the ribbon. Estas interfaces proporcionan un control completo sobre las características a las que proporcionan acceso.These interfaces provide full control over the features they provide access to. Sin embargo, para implementar estas interfaces se necesitan conocimientos sobre la interoperabilidad de COM en código administrado.However, implementing these interfaces requires some knowledge of COM interoperability in managed code. En algunos casos, el modelo de programación de estas interfaces tampoco resulta intuitivo para los desarrolladores que están acostumbrados a .NET Framework.In some cases, the programming model of these interfaces is also not intuitive for developers who are accustomed to the .NET Framework.

Cuando se crea un complemento VSTO mediante las plantillas de proyecto de Office en Visual Studio, no es necesario implementar las interfaces de extensibilidad para personalizar características como la cinta.When you create a VSTO Add-in by using the Office project templates in Visual Studio, you do not have to implement the extensibility interfaces to customize features like the ribbon. El Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime implementa estas interfaces automáticamente.The Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime implements these interfaces for you. En su lugar, puede usar las clases y los diseñadores más intuitivos que Visual Studio proporciona.Instead, you can use more intuitive classes and designers provided by Visual Studio. Sin embargo, puede implementar las interfaces de extensibilidad directamente en su complemento VSTO si lo desea.However, you can still implement the extensibility interfaces directly in your VSTO Add-in if you want to.

Para obtener más información acerca de las clases y los diseñadores que Visual Studio proporciona para estas características, consulte paneles de tareas personalizados, Diseñador de la cinta, y crear áreas de formulario de Outlook.For more information about the classes and designers that Visual Studio provides for these features, see Custom Task Panes, Ribbon Designer, and Creating Outlook Form Regions.

Interfaces de extensibilidad que puede implementar en un complemento VSTOExtensibility Interfaces You Can Implement in a VSTO Add-in

La tabla siguiente enumera las interfaces de extensibilidad que puede implementar, y las aplicaciones que las admiten.The following table lists the extensibility interfaces you can implement and the applications that support them.

InterfazInterface DescripciónDescription AplicacionesApplications
IRibbonExtensibility Implemente esta interfaz para personalizar la interfaz de usuario de la cinta.Implement this interface to customize the ribbon UI. Nota: puede agregar un cinta (XML) elemento a un proyecto para generar el valor predeterminado es IRibbonExtensibility implementación en el complemento de VSTO.Note: You can add a Ribbon (XML) item to a project to generate a default IRibbonExtensibility implementation in your VSTO Add-in. Para obtener más información, consulta Ribbon XML.For more information, see Ribbon XML. ExcelExcel

InfoPath 2013InfoPath 2013

InfoPath 2010InfoPath 2010

OutlookOutlook

PowerPointPowerPoint

ProyectoProject

VisioVisio

PalabraWord
Microsoft.Office.Core.ICustomTaskPaneConsumer Implemente esta interfaz para crear un panel de tareas personalizado.Implement this interface to create a custom task pane. ExcelExcel

OutlookOutlook

PowerPointPowerPoint

PalabraWord
Microsoft.Office.Interop.Outlook.FormRegionStartup Implemente esta interfaz para crear una región de formulario de Outlook.Implement this interface to create an Outlook form region. OutlookOutlook

Hay algunas otras interfaces de extensibilidad definidas por Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvidery Microsoft.Office.Core.SignatureProvider.There are several other extensibility interfaces that are defined by Microsoft Office, such as Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, and Microsoft.Office.Core.SignatureProvider. Visual Studio no permite implementar estas interfaces en un complemento VSTO creado mediante plantillas de proyectos de Office.Visual Studio does not support implementing these interfaces in a VSTO Add-in created by using the Office project templates.

Usar interfaces de extensibilidadUsing Extensibility Interfaces

Para personalizar una característica de interfaz de usuario , mediante una interfaz de extensibilidad, implemente la interfaz apropiada en su proyecto de complemento VSTO.To customize a UI feature by using an extensibility interface, implement the appropriate interface in your VSTO Add-in project. Después, invalide el método RequestService para que devuelva una instancia de la clase que implementa la interfaz.Then, override the RequestService method to return an instance of the class that implements the interface.

Para ver un ejemplo de aplicación que muestre cómo puede implementar las interfaces IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumery Microsoft.Office.Interop.Outlook.FormRegionStartup en un complemento VSTO para Outlook, consulte el ejemplo del administrador de interfaz de usuario en Office Development Samples.For a sample application that demonstrates how to implement the IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, and Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces in a VSTO Add-in for Outlook, see the UI Manager Sample in Office Development Samples.

Ejemplo de implementación de una interfaz de extensibilidadExample of Implementing an Extensibility Interface

El ejemplo de código siguiente muestra una implementación simple de la interfaz Microsoft.Office.Core.ICustomTaskPaneConsumer para crear un panel de tareas personalizado.The following code example demonstrates a simple implementation of the Microsoft.Office.Core.ICustomTaskPaneConsumer interface to create a custom task pane. Este ejemplo define dos clases:This example defines two classes:

  • La clase TaskPaneHelper implementa Microsoft.Office.Core.ICustomTaskPaneConsumer para crear y mostrar un panel de tareas personalizado.The TaskPaneHelper class implements Microsoft.Office.Core.ICustomTaskPaneConsumer to create and display a custom task pane.

  • La clase TaskPaneUI proporciona la interfaz de usuario del panel de tareas.The TaskPaneUI class provides the UI of the task pane. Los atributos de la clase TaskPaneUI hacen que la clase sea visible para COM, lo que permite que las aplicaciones de Microsoft Office detecten la clase.The attributes for the TaskPaneUI class make the class visible to COM, which enables Microsoft Office applications to discover the class. En este ejemplo, la interfaz de usuario es un UserControlvacío, pero puede agregar controles modificando el código.In this example, the UI is an empty UserControl, but you can add controls by modifying the code.

    Nota

    Para exponer la clase TaskPaneUI a COM, también debe establecer la propiedad Registrar para interoperabilidad COM para el proyecto.To expose the TaskPaneUI class to COM, you must also set the Register for COM Interop property for the project.

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

    Para obtener más información sobre cómo implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, vea Crear paneles de tareas personalizados en 2007 Office System , en la documentación de Microsoft Office.For more information about implementing Microsoft.Office.Core.ICustomTaskPaneConsumer, see Creating Custom Task Panes in the 2007 Office System in the Microsoft Office documentation.

Ejemplo de invalidación del método RequestServiceExample of Overriding the RequestService Method

El siguiente código de ejemplo muestra cómo invalidar el método RequestService para devolver una instancia de la clase TaskPaneHelper del ejemplo de código anterior.The following code example demonstrates how to override the RequestService method to return an instance of the TaskPaneHelper class from the previous code example. Comprueba el valor del parámetro serviceGuid para determinar qué interfaz se está solicitando, y devuelve un objeto que implementa esa interfaz.It checks the value of the serviceGuid parameter to determine which interface is being requested, and then returns an object that implements that interface.

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

Vea tambiénSee Also

Tutoriales y ejemplos de desarrollo de office Office Development Samples and Walkthroughs
Programming VSTO Add-Ins Programming VSTO Add-Ins
Desarrollar soluciones de Office Developing Office Solutions
Llamar a código en complementos VSTO desde otras soluciones de Office Calling Code in VSTO Add-ins from Other Office Solutions
Cómo: crear proyectos de Office en Visual Studio How to: Create Office Projects in Visual Studio
Arquitectura de complementos VSTOArchitecture of VSTO Add-ins