Personalizzazione delle funzionalità dell'interfaccia utente utilizzando le interfacce di estensibilità
Gli strumenti di sviluppo di Office in Visual Studio forniscono classi e finestre di progettazione che gestiscono molti dettagli di implementazione quando vengono utilizzate per creare riquadri attività personalizzati, personalizzazioni della barra multifunzione e 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à.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di applicazione per Microsoft Office 2013 e Microsoft Office 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Cenni preliminari sulle interfacce di Extensibility
Microsoft Office definisce un set di interfacce di estensibilità dei componenti aggiuntivi COM può implementare per personalizzare determinate funzionalità, ad esempio la barra multifunzione.Queste interfacce forniscono il controllo completo sulle funzionalità alle quali 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 è nemmeno intuitivo per gli sviluppatori abituati a .NET Framework.
Quando si crea un componente aggiuntivo tramite i modelli di progetto di Office in Visual Studio, non è necessario implementare interfacce di estensibilità per personalizzare funzionalità come la barra multifunzione.Queste interfacce vengono automaticamente implementate in Runtime di Visual Studio Tools per Office.Al contrario, è possibile utilizzare classi e finestre di progettazione più intuitive fornite da Visual Studio.Tuttavia, è anche possibile implementare le interfacce di estensibilità direttamente nel componente aggiuntivo, se si desidera.
Per ulteriori informazioni sulle classi e sulle finestre di progettazione fornite da Visual Studio per queste funzionalità, vedere Riquadri attività personalizzati, Finestra di progettazione della barra multifunzione e Creazione di aree di modulo di Outlook.
Interfacce di Extensibility implementabili in un componente aggiuntivo
Nella tabella seguente sono elencate le interfacce di Extensibility implementabili e le applicazioni che le supportano.
Interfaccia |
Descrizione |
Applicazioni |
---|---|---|
Implementare questa interfaccia per personalizzare l'interfaccia utente della barra multifunzione.
Nota
È possibile aggiungere un elemento Barra multifunzione (XML) in un progetto per generare un'implementazione predefinita Microsoft.Office.Core.IRibbonExtensibility nel componente aggiuntivo.Per ulteriori informazioni, vedere Elemento XML della barra multifunzione.
|
Excel 2013 InfoPath 2013 Outlook 2013 PowerPoint 2013 Project 2013 Visio 2013 Word 2013 Excel 2010 InfoPath 2010 Outlook 2010 PowerPoint 2010 Project 2010 Visio 2010 Word 2010 |
|
Implementare questa interfaccia per creare un riquadro attività personalizzato. |
Excel 2013 Outlook 2013 PowerPoint 2013 Word 2013 Excel 2010 Outlook 2010 PowerPoint 2010 Word 2010 |
|
Implementare questa interfaccia per creare un'area di modulo Outlook. |
Outlook 2013 Outlook 2010 |
Esistono diverse altre interfacce di estensibilità definite dalle applicazioni di Microsoft Office, ad esempio Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider e Microsoft.Office.Core.SignatureProvider.In Visual Studio l'implementazione di queste interfacce in un componente aggiuntivo creato tramite i modelli di progetto di Office non è supportata.
Utilizzo delle interfacce di Extensibility
Per personalizzare una funzionalità dell'interfaccia utente utilizzando un'interfaccia di Extensibility, 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, Microsoft.Office.Core.ICustomTaskPaneConsumer e Microsoft.Office.Interop.Outlook.FormRegionStartup in un componente aggiuntivo per Outlook, vedere l'esempio di gestione dell'interfaccia utente in Esempi di sviluppo Office.
Esempio di implementazione di una interfaccia di Extensibility
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 Gestione delle proprietà di compilazione.
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
{
}
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.
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à
Procedura: creare progetti di Office in Visual Studio
Concetti
Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office
Architettura dei componenti aggiuntivi a livello di applicazione
Altre risorse
Procedure dettagliate ed esempi di sviluppo di applicazioni per Microsoft Office
Programmazione di componenti aggiuntivi a livello di applicazione