Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

VSTO & VB 2008 SP 1: il metodo extension GetVstoObject

L’introduzione del Service Pack 1 per Visual Studio 2008 ha apportato alcuni miglioramenti anche nello sviluppo per Office System, attraverso i Visual Studio Tools for Office. Una delle novità riguarda l’introduzione di un namespace chiamato Microsoft.Office.Tools.Word.Extensions (ce n’è uno corrispondente anche per Excel) che fornisce una classe chiamata DocumentExtensions. Tale classe, come il nome lascia intuire, introduce alcuni metodi extension particolarmente interessanti. Uno di questi metodi si chiama GetVstoObject e ci permette di ottenere un riferimento managed al documento attivo in Microsoft Word 2007 nelle soluzioni a livello di applicazione (quindi componenti aggiuntivi).

In questo esempio vedremo come utilizzare il metodo citato per ottenere un riferimento al documento di Word, quindi vedremo in azione il metodo AddButton della classe Microsoft.Office.Tools.Word.ControlCollection per l’aggiunta di un pulsante Windows Forms al documento stesso.

Apriamo Visual Studio 2008 e, nella finestra di creazione di un nuovo progetto, selezioniamo il template chiamato Word 2007 Add-in disponibile nella cartella denominata Office. Per praticità espositiva, scriveremo il codice all’interno del gestore di evento ThisAddIn_Startup, che si verifica all’avvio del componente aggiuntivo per Word.

Ora scriviamo quanto segue:

    Imports Microsoft.Office.Tools.Word

 

 

    Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

 

        'Ottiene un riferimento managed al documento attivo

        'sfruttando il nuovo metodo extension GetVstoObject

        Dim doc As Document = Me.Application.ActiveDocument.GetVstoObject()

 

        'Dichiara un nuovo pulsante

        Dim myButton As Controls.Button

 

        'Aggiunge il pulsante al documento

        myButton = doc.Controls.AddButton(10, 10, 100, 30, "WordButton1")

        myButton.Text = "Click me!"

 

        'Specifica il gestore dell'evento Click

        AddHandler myButton.Click, AddressOf myButtonClick

    End Sub

 

Tramite il metodo GetVstoObject otteniamo un riferimento al document attivo e lo assegnamo a un oggetto di tipo Microsoft.Office.Tools.Word.Document. Successivamente si dichiara un oggetto Button, quindi un pulsante, appartenente al namespace Microsoft.Office.Tools.Word.Controls. Questo namespace mette a disposizione altri controlli (per esempio DataGridView, CheckBox, WebBrowser) tutti di derivazione Windows Forms. In questo caso, il pulsante viene aggiunto al documento tramite il metodo AddButton che riceve, come argomenti, la posizione (Left/Top), la dimensione (Width/Height) e un identificatore per il pulsante, al quale viene assegnato il contenuto mediante la proprietà Text.

L’istruzione AddHandler permette di specificare quale metodo dovrà gestire l’evento Click del pulsante. Abbiamo indicato un metodo myButtonClick, il cui semplicissimo gestore sarà qualcosa di questo tipo:

    Private Sub myButtonClick(ByVal sender As Object, ByVal e As EventArgs)

        System.Windows.Forms.MessageBox.Show("You clicked me!")

    End Sub

 

Se avviate l’applicazione, Microsoft Word 2007 mostrerà subito il risultato del nostro lavoro in quanto il componente aggiuntivo viene anche distribuito in locale durante la compilazione:

Dopo tutto questo discorso ritengo opportuno sottolineare come i metodi extension, sebbene progettati per LINQ, possano trovare altre destinazioni e utilizzi altrettanto interessanti.

Alessandro

Print | posted on domenica 31 agosto 2008 16:28 | Filed Under [ Visual Basic Visual Studio Tools for Office ]

Powered by:
Powered By Subtext Powered By ASP.NET