Condividi tramite


Procedura dettagliata: Creazione di un modello di modulo con codice gestito di base

Quando si utilizza Microsoft Office InfoPath 2003 per scrivere una regola business in un linguaggio con codice gestito, ad esempio Visual Basic o C#, è necessario utilizzare un progetto di InfoPath creato con Microsoft Visual Studio .NET 2003 e Microsoft Office InfoPath 2003 Toolkit per Visual Studio .NET o Visual Studio 2005 Tools per Microsoft Office System con Microsoft Office InfoPath 2003 Toolkit per Visual Studio 2005. Entrambi questi ambienti di sviluppo con codice gestito dipendono da e supportano solo il modello a oggetti con codice gestito basato sull'interoperabilità COM implementato dall'assembly Microsoft.Office.Interop.InfoPath.SemiTrust

Per Microsoft Office InfoPath 2007, è possibile scrivere una regola business in Visual Basic o C# aprendo un modello di modulo in modalità progettazione e quindi utilizzando uno dei comandi dell'interfaccia utente per aggiungere un gestore eventi, che avvia l'ambiente di sviluppo Microsoft Visual Studio Tools for Applications (VSTA) per la scrittura del codice. Per impostazione predefinita, i progetti modello di modulo creati utilizzando VSTA utilizzano il nuovo modello a oggetti con codice gestito implementato dall'assembly Microsoft.Office.InfoPath.

In alternativa, se nel computer è installato Visual Studio 2005 con Microsoft Visual Studio Tools per Microsoft Office System 2007, o Visual Studio 2008 con Visual Studio Tools per Office, è possibile iniziare con Visual Studio, creare un progetto modello di modulo di InfoPath e quindi utilizzare l'integrazione della modalità progettazione di InfoPath per progettare il modulo e aggiungere la regola business sempre all'interno dell'ambiente Visual Studio.

Nella prima procedura viene illustrata la creazione di una semplice applicazione Hello World tramite C# o Visual Basic negli ambienti di sviluppo VSTA e Visual Studio. La procedura termina con un codice di esempio in cui viene descritto l'utilizzo della proprietà System.Environment.UserName per recuperare il nome dell'utente corrente e immettere tale valore in un controllo Casella di testo.

Prerequisiti

Per completare la procedura dettagliata utilizzando l'ambiente di sviluppo VSTA, è necessario installare:

  • Microsoft Office InfoPath 2007 con Microsoft Visual Studio Tools for Applications (VSTA).

Per completare la procedura guidata utilizzando l'integrazione tra la modalità progettazione di InfoPath e l'ambiente di sviluppo Visual Studio, è necessario installare:

  • Microsoft Office InfoPath 2007

  • Microsoft Visual Studio 2005 con Microsoft Visual Studio Tools per Microsoft Office System 2007 o Visual Studio 2008 con Visual Studio Tools per Office

Nota:

Per informazioni sul download e l'installazione di Microsoft Visual Studio Tools per Microsoft Office System 2007, vedere il Portale per sviluppatori di InfoPath.

Hello World in VSTA

Nella procedura seguente viene descritto come visualizzare una semplice finestra di messaggio tramite la scrittura di un gestore eventi per l'evento Clicked della classe ButtonEvent, associata al controllo Pulsante. Le procedure presuppongono che venga utilizzato l'ambiente di sviluppo Microsoft Visual Studio Tools for Applications (VSTA).

Creare un nuovo progetto e specificare il linguaggio di programmazione (Visual Studio Tools for Applications)

  1. Avviare InfoPath.

  2. Nella finestra di dialogo Compila modulo fare clic su Progetta modello di modulo in Progetta modulo.

    Nota:

    Se InfoPath è già in esecuzione, per visualizzare la finestra di dialogo Progetta modulo scegliere Progetta modulo dal menu File.

  3. Nella finestra di dialogo Progetta modello di modulo fare clic su Modello di modulo, su Vuoto, deselezionare la casella di controllo Attiva solo caratteristiche compatibili con browser e quindi fare clic su OK.

  4. Scegliere Opzioni modulo dal menu Strumenti.

  5. Nell'elenco Categoria fare clic su Programmazione, selezionare Visual Basic o C# nell'elenco a discesa Linguaggio codice modello di modulo e quindi fare clic su OK.

    A questo punto è possibile aggiungere un controllo Pulsante e creare il relativo gestore eventi.

Aggiungere un controllo Pulsante e un gestore eventi

  1. Nel riquadro attività Attività di progettazione fare clic su Controlli.

  2. Trascinare un controllo Pulsante nel modulo.

  3. Fare doppio clic sul controllo Pulsante, digitare Hello per la proprietà Etichetta e quindi fare clic su Modifica codice modulo. Quando viene richiesto, salvare il modulo con il nome HelloWorld.

    Verrà avviato l'ambiente Visual Studio Tools for Applications con il cursore posizionato nel gestore eventi per l'evento Clicked del controllo Pulsante.

    A questo punto è possibile aggiungere il codice del modulo al gestore eventi per il pulsante.

Aggiungere il codice "Hello World" al gestore eventi e visualizzare il modulo in anteprima.

  1. Nella bozza di codice del gestore eventi digitare il codice seguente:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Il codice per il modello di modulo dovrebbe essere simile al seguente:

    using Microsoft.Office.InfoPath;
    using System;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace HelloWorld
    {
       public partial class FormCode
       {
          public void InternalStartup()
          {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
          }
    
          public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
          {
             MessageBox.Show("Hello World!");
          }
       }
    }
    
    Imports Microsoft.Office.InfoPath
    Imports System
    Imports System.Windows.Forms
    Imports System.Xml
    Imports System.Xml.XPath
    
    Namespace HelloWorld
       Public Class FormCode
          Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
          End Sub
    
          Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
          End Sub
       End Class
    End Namespace
    
  2. Passare alla finestra di progettazione di InfoPath.

  3. Fare clic sul pulsante Anteprima sulla barra degli strumenti Standard.

  4. Fare clic sul pulsante Hello.

    Verrà visualizzata una finestra di messaggio contenente il testo "Hello World!"

    Nella procedura seguente viene illustrato come aggiungere punti di interruzione per il debug al codice del modulo.

Eseguire il debug del codice del modulo

  1. Tornare alla finestra di VSTA.

  2. Fare clic sulla barra grigia a sinistra della riga seguente:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Verrà visualizzato un cerchio rosso e la riga del codice verrà evidenziata, a indicare che l'esecuzione verrà sospesa in corrispondenza di questo punto di interruzione.

  3. Scegliere Avvia debug dal menu Debug oppure premere F5.

  4. Nella finestra Anteprima di InfoPath fare clic sul pulsante Hello.

  5. Lo stato attivo passerà all'editor di codice di VSTA e verrà evidenziata la riga con il punto di interruzione.

  6. Scegliere Ignora dal menu Debug (o premere F10) per continuare a eseguire il codice un'istruzione per volta.

  7. Verrà eseguito il codice del gestore eventi e verrà visualizzato il messaggio "Hello World!".

  8. Fare clic su OK per tornare all'editor di codice di VSTA e quindi scegliere Termina debug dal menu Debug oppure premere CTRL+ALT+INTERR.

Hello World in Visual Studio con integrazione della modalità progettazione di InfoPath

Nella procedura dettagliata seguente viene illustrato come scrivere la stessa applicazione Hello World di esempio della sezione precedente, ma integrando la modalità progettazione di InfoPath in Visual Studio 2005 tramite l'installazione di Microsoft Visual Studio Tools per Microsoft Office System 2007 o di Visual Studio 2008 con Visual Studio Tools per Office e utilizzando questo ambiente di sviluppo integrato.

Creare un nuovo progetto e specificare il linguaggio di programmazione (Visual Studio)

  1. Avviare Visual Studio.

  2. Scegliere Nuovo dal menu File e quindi fare clic su Progetto.

  3. In Progetto espandere la cartella Visual C#, fare clic su Office (in Visual Studio 2008 fare clic su 2007) e quindi su Modello di modulo InfoPath.

    In alternativa, espandere la cartella Altri linguaggi, la cartella Visual Basic, fare clic su Office (in Visual Studio 2008 fare clic su 2007) e quindi su Modello di modulo InfoPath.

  4. Assegnare al progetto il nome HelloWorld e quindi fare clic su OK.

  5. Nella finestra di dialogo Progetta modulo fare clic su Modello di modulo, su Vuoto e quindi su OK.

    Lo strumento di progettazione dei modelli di modulo di InfoPath integrato verrà visualizzato in una scheda denominata manifest.xsf [Progettazione].

    A questo punto è possibile aggiungere un controllo Pulsante e creare il relativo gestore eventi.

Aggiungere un controllo Pulsante e un gestore eventi

  • Nel riquadro attività Attività di progettazione fare clic su Controlli.
Nota:

Se il riquadro attività Attività di progettazione non viene visualizzato, scegliere Attività di progettazione dal menu Visualizza.

  1. Trascinare un controllo Pulsante dalla Casella degli strumenti nel modulo.

  2. Fare doppio clic sul controllo Pulsante, digitare Hello per la proprietà Etichetta e quindi fare clic su Modifica codice modulo. Quando viene richiesto, salvare il modulo.

    Verrà visualizzata la finestra dell'editor di codice con il cursore posizionato nel gestore eventi per l'evento Clicked del controllo Pulsante.

    A questo punto è possibile aggiungere il codice del modulo al gestore eventi per il pulsante.

Aggiungere il codice "Hello World" al gestore eventi e visualizzare il modulo in anteprima.

  1. Nella bozza di codice del gestore eventi digitare:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Il codice per il modello di modulo dovrebbe essere simile al seguente:

    using Microsoft.Office.InfoPath;
    using System;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace HelloWorld
    {
       public partial class FormCode
       {
          public void InternalStartup()
          {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
          }
    
          public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
          {
             MessageBox.Show("Hello World!");
          }
       }
    }
    
    Imports Microsoft.Office.InfoPath
    Imports System
    Imports System.Windows.Forms
    Imports System.Xml
    Imports System.Xml.XPath
    
    Namespace HelloWorld
       Public Class FormCode
          Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
          End Sub
    
          Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
          End Sub
       End Class
    End Namespace
    
  2. Scegliere Avvia debug dal menu Debug oppure premere F5.

    Verrà visualizzata la finestra Anteprima di InfoPath.

  3. Fare clic sul pulsante Hello.

    Verrà visualizzata una finestra di messaggio contenente il testo "Hello World!"

  4. Fare clic su OK e quindi sul pulsante Chiudi anteprima sulla barra degli strumenti Standard per tornare a Visual Studio.

    Nella procedura seguente viene descritto come aggiungere punti di interruzione per il debug al codice del modulo.

Eseguire il debug del codice del modulo

  1. Fare clic sulla scheda FormCode.cs o FormCode.vb per tornare all'editor di codice.

  2. Fare clic sulla barra grigia a sinistra della riga seguente:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Verrà visualizzato un cerchio rosso e la riga del codice verrà evidenziata, a indicare che l'esecuzione verrà sospesa in corrispondenza di questo punto di interruzione.

  3. Scegliere Avvia debug dal menu Debug oppure premere F5.

  4. Nella finestra Anteprima di InfoPath fare clic sul pulsante Hello.

  5. Lo stato attivo passerà all'editor di codice e verrà evidenziata la riga con il punto di interruzione.

  6. Scegliere Ignora dal menu Debug (o premere F10) per continuare a eseguire il codice un'istruzione per volta.

  7. Verrà eseguito il codice del gestore eventi e verrà visualizzato il messaggio "Hello World!".

  8. Fare clic su OK per tornare all'editor di codice e quindi scegliere Termina debug dal menu Debug oppure premere CTRL+ALT+INTERR.

Ottenere il nome dell'utente corrente

Utilizzando le classi di .NET Framework, è possibile accedere a ulteriori funzionalità disponibili più semplicemente rispetto a quando si utilizza una regola business scritta in codice di script. Nell'esempio seguente viene descritto l'utilizzo della proprietà UserName della classe Environment per recuperare il nome dell'utente corrente e immettere il valore di un controllo Casella di testo tramite un gestore eventi per l'evento Loading.

Per popolare il controllo Casella di testo, è necessario utilizzare due istanze della classe XPathNavigator.

La prima istanza utilizza la proprietà MainDataSource della classe XmlForm per recuperare un'istanza della classe DataSource che rappresenta il documento XML sottostante del modulo. Tale istanza della classe DataSource utilizza quindi il metodo CreateNavigator per posizionare XPathNavigator nel nodo principale del documento XML.

La seconda istanza di XPathNavigator viene posizionata nel campo employee del documento XML tramite la prima istanza e quindi viene utilizzato il metodo SetValue della classe XPathNavigator per impostare il valore del campo con la proprietà UserName.

Per ulteriori informazioni sull'utilizzo di System.Xml in modelli di modulo con codice gestito, vedere Procedura: Utilizzare le classi XPathNavigator e XPathNodeIterator.

Aggiungere un gestore eventi di caricamento

  1. Aprire il progetto HelloWorld creato nella procedura precedente.

    Se si utilizza InfoPath con Microsoft Visual Studio Tools for Applications (VSTA), avviare InfoPath e aprire il modulo in modalità progettazione in InfoPath. Se si utilizza Visual Studio 2005 con Microsoft Visual Studio Tools per Microsoft Office System 2007 o Visual Studio 2008 con Visual Studio Tools per Office, avviare Visual Studio e aprire il progetto.

  2. Scegliere Origine dati dal menu Visualizza.

  3. Fare clic con il pulsante destro del mouse sulla cartella campiPersonali e quindi scegliere Aggiungi.

  4. Nella casella Nome digitare employee e quindi fare clic su OK.

  5. Trascinare il campo employee nella visualizzazione.

  6. Se si utilizza InfoPath, scegliere Programmazione dal menu Strumenti e quindi Evento di caricamento.

    Se si utilizza Visual Studio, scegliere Evento dal menu Inserisci e quindi Evento di caricamento.

    Verrà creato un gestore eventi per l'evento Loading e lo stato attivo passerà a tale gestore eventi nell'editor di codice.

  7. Nell'editor di codice digitare il codice seguente:

    public void FormEvents_Loading(object sender, LoadingEventArgs e)
    {
       System.Xml.XPath.XPathNavigator root, user;
       root = this.MainDataSource.CreateNavigator();
       user = root.SelectSingleNode("//my:employee", this.NamespaceManager);
       user.SetValue(System.Environment.UserName);
    }
    
    Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
       Dim root, user As System.Xml.XPath.XPathNavigator
       root = Me.MainDataSource.CreateNavigator
       user = root.SelectSingleNode("//my:employee", Me.NamespaceManager)
       user.SetValue(System.Environment.UserName)
    End Sub
    
  8. Se si utilizza Microsoft Visual Studio Tools for Applications (VSTA), passare alla finestra di progettazione del modulo di InfoPath e quindi fare clic sul pulsante Anteprima per visualizzare il modulo in anteprima.

    Se si utilizza Visual Studio, scegliere Avvia debug dal menu Debug (oppure premere F5) per visualizzare il modulo in anteprima.

Passaggi successivi

Vedere anche

Riferimenti

XmlForm