Procedura dettagliata: associazione ai dati di un servizio in un progetto a livello di applicazione
È possibile associare dati ai controlli host nei progetti a livello di applicazione. In questa procedura dettagliata viene illustrato come aggiungere controlli a un documento di Microsoft Office Word, associare i controlli ai dati recuperati da MSDN Content Service e rispondere agli eventi in fase di esecuzione.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di applicazione per Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
In questa procedura dettagliata vengono illustrate le seguenti attività:
Aggiunta di un controllo RichTextContentControl a un documento in fase di esecuzione.
Associazione del controllo RichTextContentControl ai dati di un servizio Web.
Risposta all'evento Entering di un controllo RichTextContentControl.
Nota
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
-
Una versione di Visual Studio 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).
- Microsoft Office Word 2007 o Word 2010.
Creazione di un nuovo progetto
Il primo passaggio consiste nella creazione di un progetto componente aggiuntivo per Word.
Per creare un nuovo progetto
Creare un progetto relativo al componente aggiuntivo per Word denominato MTPS Content Service mediante Visual Basic o C#.
Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.
In Visual Studio viene aperto il file ThisAddIn.vb o ThisAddIn.cs e aggiunto il progetto a Esplora soluzioni.
Aggiunta di un servizio Web
Per questa procedura dettagliata, utilizzare un servizio Web denominato MTPS Content Service. Questo servizio Web restituisce le informazioni di un articolo specifico di MSDN sotto forma di stringa XML o testo normale. In un passaggio successivo viene illustrato come visualizzare le informazioni restituite in un controllo del contenuto.
Per aggiungere MTPS Content Service al progetto
Scegliere Aggiungi nuova origine dati dal menu Dati.
Nella Configurazione guidata origine dati, scegliere Servizio, quindi Avanti.
Nel campo Indirizzo, digitare l'URL seguente:
http://services.msdn.microsoft.com/ContentServices/ContentService.asmx
Fare clic su Vai.
Nel campo Spazio dei nomi, digitare ContentService, quindi scegliere OK.
Nella finestra di dialogo della procedura guidata per l'aggiunta del riferimento, scegliere Fine.
Aggiunta di un controllo del contenuto e di un'associazione ai dati in fase di esecuzione
Nei progetti a livello di applicazione è possibile aggiungere e associare i controlli in fase di esecuzione. Per questa procedura dettagliata, configurare il controllo del contenuto in modo che recuperi i dati dal servizio Web quando un utente esegue una selezione all'interno del controllo.
Per aggiungere un controllo del contenuto ed eseguire associazioni ai dati
Nella classe ThisAddIn dichiarare le variabili per MTPS Content Service, il controllo del contenuto e l'associazione dati.
Private request As ContentService.getContentRequest Private proxy As ContentService.ContentServicePortTypeClient Private document As ContentService.requestedDocument() Private response As ContentService.getContentResponse Private appId As ContentService.appId Private WithEvents richTextContentControl As Microsoft.Office.Tools.Word.RichTextContentControl Private components As System.ComponentModel.Container Private primaryDocumentsBindingSource As System.Windows.Forms.BindingSource
private ContentService.getContentRequest request; private ContentService.ContentServicePortTypeClient proxy; private ContentService.requestedDocument[] document; private ContentService.getContentResponse response; private ContentService.appId appId; private Microsoft.Office.Tools.Word.RichTextContentControl richTextContentControl; private System.ComponentModel.Container components; private System.Windows.Forms.BindingSource primaryDocumentsBindingSource;
Aggiungere il seguente metodo alla classe ThisAddIn. Questo metodo consente di creare un controllo del contenuto all'inizio del documento attivo.
Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() ' Use the following line of code in projects that target the .NET Framework 4. Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument) ' In projects that target the .NET Framework 3.5, use the following line of code instead. ' Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextContentControl = extendedDocument.Controls.AddRichTextContentControl _ (currentDocument.Paragraphs(1).Range, "richTextControl2") richTextContentControl.PlaceholderText = _ "Click here to download MSDN Library information about content controls." End Sub
private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); // Use the following line of code in projects that target the .NET Framework 4. Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument); // In projects that target the .NET Framework 3.5, use the following line of code instead. // Document extendedDocument = currentDocument.GetVstoObject(); richTextContentControl = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextContentControl"); richTextContentControl.PlaceholderText = "Click here to download MSDN Library information about content controls."; }
Aggiungere il seguente metodo alla classe ThisAddIn. Questo metodo consente di inizializzare gli oggetti necessari per creare e inviare una richiesta al servizio Web.
Private Sub InitializeServiceObjects() request = New ContentService.getContentRequest() proxy = New ContentService.ContentServicePortTypeClient() document = New ContentService.requestedDocument(0) {} response = New ContentService.getContentResponse() appId = New ContentService.appId() components = New System.ComponentModel.Container() primaryDocumentsBindingSource = New System.Windows.Forms.BindingSource(components) End Sub
private void InitializeServiceObjects() { request = new ContentService.getContentRequest(); proxy = new ContentService.ContentServicePortTypeClient(); document = new ContentService.requestedDocument[1]; response = new ContentService.getContentResponse(); appId = new ContentService.appId(); components = new System.ComponentModel.Container(); primaryDocumentsBindingSource = new System.Windows.Forms.BindingSource(this.components); }
Creare un gestore eventi per recuperare il documento di MSDN Library sui controlli del contenuto quando un utente esegue una selezione all'interno del controllo del contenuto e associa i dati al controllo del contenuto.
Private Sub richTextContentControl_Entering _ (ByVal sender As Object, ByVal e As ContentControlEnteringEventArgs) _ Handles richTextContentControl.Entering document(0) = New ContentService.requestedDocument() With document(0) .type = ContentService.documentTypes.primary .selector = "Mtps.Xhtml" End With With request .contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d" .locale = "en-us" .version = "VS.90" .requestedDocuments = document End With response = proxy.GetContent(appId, request) primaryDocumentsBindingSource.DataSource = _ response.primaryDocuments(0).Any.InnerText richTextContentControl.DataBindings.Add("Text", _ primaryDocumentsBindingSource.DataSource, "", True, _ System.Windows.Forms.DataSourceUpdateMode.OnValidation) End Sub
void richTextContentControl_Entering(object sender, ContentControlEnteringEventArgs e) { document[0] = new ContentService.requestedDocument(); document[0].type = ContentService.documentTypes.primary; document[0].selector = "Mtps.Xhtml"; request.contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d"; request.locale = "en-us"; request.version = "VS.90"; request.requestedDocuments = document; response = proxy.GetContent(appId, request); primaryDocumentsBindingSource.DataSource = response.primaryDocuments[0].Any.InnerText; richTextContentControl.DataBindings.Add("Text", primaryDocumentsBindingSource.DataSource, "", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation); }
Chiamare i metodi AddRichTextControlAtRange e InitializeServiceObjects dal metodo ThisAddIn_Startup. Per i programmatori C#, aggiungere un gestore eventi.
Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup AddRichTextControlAtRange() InitializeServiceObjects() End Sub
private void ThisAddIn_Startup(object sender, System.EventArgs e) { AddRichTextControlAtRange(); InitializeServiceObjects(); this.richTextContentControl.Entering += richTextContentControl_Entering; }
Verifica del componente aggiuntivo
Quando si apre Word, viene visualizzato il controllo RichTextContentControl. Il testo del controllo viene modificato quando si esegue una selezione all'interno dello stesso.
Per verificare il componente aggiuntivo
Premere F5.
Selezione all'interno del controllo del contenuto.
Le informazioni vengono scaricate da MTPS Content Service e visualizzate all'interno del controllo del contenuto.