Condividi tramite


Personalizzazione delle funzionalità dell'interfaccia utente utilizzando le interfacce di estensibilità

Aggiornamento: novembre 2007

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di applicazione

Versione Microsoft Office

  • Microsoft Office System 2007

Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione.

Visual Studio Tools per Office fornisce classi e finestre di progettazione che gestiscono molti dettagli di implementazione quando vengono utilizzate per creare riquadri attività personalizzati, le personalizzazioni della barra multifunzione e le aree di modulo di Outlook in un componente aggiuntivo a livello di applicazione. Tuttavia, se sono necessari requisiti speciali è anche possibile implementare l'interfaccia di estensibilità per ogni funzionalità.

Cenni preliminari sulle interfacce di estensibilità

Le applicazioni di Microsoft Office System 2007 definiscono un insieme di interfacce di estensibilità che i componenti aggiuntivi COM possono implementare per personalizzare determinate funzionalità dell'interfaccia utente. Visual Studio Tools per Office semplifica questo processo implementando automaticamente queste interfacce e fornendo classi e finestre di progettazione utilizzabili direttamente. Tuttavia, è anche possibile implementare direttamente le interfacce di estensibilità nel componente aggiuntivo.

Per ulteriori informazioni sulle classi e sulle finestre di progettazione fornite da Visual Studio Tools per Office per le funzionalità, vedere Cenni preliminari sui riquadri attività personalizzati, Finestra di progettazione della barra multifunzione e Creazione di aree di modulo di Outlook.

Interfacce di estensibilità implementabili in un componente aggiuntivo

Nella tabella seguente sono elencate le interfacce di estensibilità implementabili e le applicazioni che le supportano.

Interfaccia

Descrizione

Applicazioni

Microsoft.Office.Core.IRibbonExtensibility

Implementare questa interfaccia per personalizzare l'interfaccia utente della barra multifunzione. Per ulteriori informazioni, vedere Oggetto IRibbonExtensibility nella documentazione di Microsoft Office 2007.

Nota:
È possibile aggiungere un elemento Barra multifunzione (XML) in un progetto per generare un'implementazione predefinita di Microsoft.Office.Core.IRibbonExtensibility nel componente aggiuntivo. Per ulteriori informazioni, vedere Elemento XML della barra multifunzione.

Excel 2007

InfoPath 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implementare questa interfaccia per creare un riquadro attività personalizzato. Per ulteriori informazioni, vedere Oggetto ICustomTaskPaneConsumer nella documentazione di Microsoft Office 2007.

Excel 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implementare questa interfaccia per creare un'area di modulo Outlook. Per ulteriori informazioni, vedere Oggetto FormRegionStartup nella documentazione di Microsoft Office 2007.

Outlook 2007

Esistono diverse altre interfacce di estensibilità definite dalle applicazioni di Microsoft Office System 2007, ad esempio Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvidere Microsoft.Office.Core.SignatureProvider. Visual Studio Tools per Office non supporta l'implementazione di queste interfacce in un componente aggiuntivo.

Utilizzo delle interfacce di estensibilità

Per personalizzare una funzionalità dell'interfaccia utente utilizzando un'interfaccia di estensibilità, implementare l'interfaccia appropriata nel progetto del componente aggiuntivo. Eseguire quindi l'override del metodo RequestService in modo da ottenere un'istanza della classe che implementa l'interfaccia.

Per un'applicazione di esempio che illustra come implementare le interfacce Microsoft.Office.Core.IRibbonExtensibility e Microsoft.Office.Core.ICustomTaskPaneConsumer in un componente aggiuntivo per Excel, vedere Esempio di servizi di runtime.

Esempio di implementazione di una interfaccia di estensibilità

Nell'esempio di codice riportato di seguito viene illustrata l'implementazione dell'interfaccia Microsoft.Office.Core.ICustomTaskPaneConsumer per creare un riquadro attività personalizzato. Nell'esempio vengono definite due classi.

  • La classe TaskPaneHelper implementa Microsoft.Office.Core.ICustomTaskPaneConsumer per creare e visualizzare un riquadro attività personalizzato.

  • La classe TaskPaneUI fornisce l'interfaccia utente del riquadro attività. Gli attributi della classe TaskPaneUI rendono la classe visibile a COM, permettendo alle applicazioni di Microsoft Office di individuare la classe. In questo esempio, UserControl è un'interfaccia utente vuota, ma è possibile aggiungere i controlli modificando il codice.

    Nota:

    Per esporre la classe TaskPaneUI a COM è necessario impostare anche la proprietà Registra per interoperabilità COM per il progetto. Per ulteriori informazioni, vedere Procedura: registrare un componente per l'interoperabilità COM.

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", Type.Missing);
            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
{
}

Per ulteriori informazioni sull'implementazione di Microsoft.Office.Core.ICustomTaskPaneConsumer, vedere Creating Custom Task Panes in the 2007 Office System nella documentazione di Microsoft Office 2007 (informazioni in lingua inglese).

Esempio di override del metodo RequestService

Nell'esempio di codice riportato di seguito viene illustrato come eseguire l'override del metodo RequestService per ottenere un'istanza della classe TaskPaneHelper dall'esempio di codice precedente. Viene verificato il valore del parametro serviceGuid per determinare l'interfaccia necessaria e quindi restituire un oggetto che implementi l'interfaccia.

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

Vedere anche

Attività

Esempio di servizi di runtime

Procedura: creare progetti Visual Studio Tools per Office

Concetti

Programmazione di componenti aggiuntivi a livello di applicazione

Sviluppo di soluzioni Office

Elementi host di componenti aggiuntivi

Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office

Architettura dei componenti aggiuntivi a livello di applicazione