Condividi tramite


Personalizzare le funzionalità dell'interfaccia utente usando interfacce di estendibilità

Gli strumenti di sviluppo di Office in Visual Studio forniscono classi e finestre di progettazione che gestiscono molti dettagli di implementazione quando vengono usati per creare riquadri attività personalizzati, personalizzazioni della barra multifunzione e aree del modulo di Outlook in un componente aggiuntivo VSTO. Tuttavia, è anche possibile implementare l'interfaccia di estendibilità per ogni funzionalità se si hanno requisiti speciali.

Si applica a: Le informazioni contenute in questo argomento si applicano ai progetti di componente aggiuntivo VSTO. Per altre informazioni, vedere Funzionalità disponibili per l'applicazione e il tipo di progetto di Office.

Microsoft Office definisce un set di interfacce di estendibilità che i componenti aggiuntivi VSTO COM possono implementare per personalizzare determinate funzionalità, ad esempio la barra multifunzione. Queste interfacce forniscono il controllo completo sulle funzionalità a cui forniscono l'accesso. Tuttavia, l'implementazione di queste interfacce richiede una certa conoscenza dell'interoperabilità COM nel codice gestito. In alcuni casi, il modello di programmazione di queste interfacce non è intuitivo anche per gli sviluppatori abituati a .NET Framework.

Quando si crea un componente aggiuntivo VSTO usando i modelli di progetto di Office in Visual Studio, non è necessario implementare le interfacce di estendibilità per personalizzare funzionalità come la barra multifunzione. Il runtime di Visual Studio Tools per Office implementa queste interfacce. È invece possibile usare classi e finestre di progettazione più intuitive fornite da Visual Studio. Tuttavia, è comunque possibile implementare le interfacce di estendibilità direttamente nel componente aggiuntivo VSTO, se necessario.

Per altre informazioni sulle classi e le finestre di progettazione fornite da Visual Studio per queste funzionalità, vedere Riquadri attività personalizzati, Progettazione barra multifunzione e Creare aree del modulo di Outlook.

Interfacce di estendibilità che è possibile implementare in un componente aggiuntivo VSTO

Nella tabella seguente sono elencate le interfacce di estendibilità che è possibile implementare e le applicazioni che le supportano.

Interfaccia Description Applications
IRibbonExtensibility Implementare questa interfaccia per personalizzare l'interfaccia utente della barra multifunzione. Nota: È possibile aggiungere un elemento Ribbon (XML) a un progetto per generare un'implementazione predefinita IRibbonExtensibility nel componente aggiuntivo VSTO. Per altre informazioni, vedere XML della barra multifunzione. Excel

InfoPath 2013

InfoPath 2010

Prospettiva

PowerPoint

Progetto

Visio

Parola
ICustomTaskPaneConsumer Implementare questa interfaccia per creare un riquadro attività personalizzato. Excel

Prospettiva

PowerPoint

Parola
FormRegionStartup Implementare questa interfaccia per creare un'area del modulo di Outlook. Prospettiva

Esistono diverse altre interfacce di estendibilità definite da Microsoft Office, ad esempio IBlogExtensibility, EncryptionProvidere SignatureProvider. Visual Studio non supporta l'implementazione di queste interfacce in un componente aggiuntivo VSTO creato usando i modelli di progetto di Office.

Usare le interfacce di estendibilità

Per personalizzare una funzionalità dell'interfaccia utente usando un'interfaccia di estendibilità, implementare l'interfaccia appropriata nel progetto di componente aggiuntivo VSTO. Eseguire quindi l'override del RequestService metodo per restituire un'istanza della classe che implementa l'interfaccia .

Per un'applicazione di esempio che illustra come implementare le IRibbonExtensibilityinterfacce , ICustomTaskPaneConsumere FormRegionStartup in un componente aggiuntivo VSTO per Outlook, vedere l'esempio di Ui Manager negli esempi di sviluppo di Office.

Esempio di implementazione di un'interfaccia di estendibilità

Nell'esempio di codice seguente viene illustrata una semplice implementazione dell'interfaccia ICustomTaskPaneConsumer per creare un riquadro attività personalizzato. Questo esempio definisce due classi:

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

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

    Annotazioni

    Per esporre la TaskPaneUI classe a COM, è necessario impostare anche la proprietà Register for COM Interop per il progetto.

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

Per ulteriori informazioni sull'implementazione di ICustomTaskPaneConsumer, vedere Creare riquadri attività personalizzati nel sistema Office 2007 nella documentazione di Microsoft Office.

Esempio di override del metodo RequestService

Nell'esempio di codice seguente viene illustrato come eseguire l'override del RequestService metodo per restituire un'istanza della TaskPaneHelper classe dall'esempio di codice precedente. Controlla il valore del parametro serviceGuid per determinare quale interfaccia viene richiesta e quindi restituisce un oggetto che implementa tale interfaccia.

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