Evento FormEvents.ContextChanged

Si verifica dopo la modifica del nodo di contesto.

Spazio dei nomi: Microsoft.Office.InfoPath
Assembly: Microsoft.Office.InfoPath (in microsoft.office.infopath.dll)

Sintassi

Public Event ContextChanged As ContextChangedEventHandler

Dim instance As FormEvents
Dim handler As ContextChangedEventHandler

AddHandler instance.ContextChanged, handler
public abstract event ContextChangedEventHandler ContextChanged

Eccezioni

Tipo eccezione Condizione

InvalidOperationException

Lo sviluppatore ha cercato di associare l'evento in una posizione diversa dal metodo InternalStartup.

Osservazioni

Importante:

Gli sviluppatori non devono creare un'istanza dell'evento ContextChanged nel codice del modulo. È consigliabile aggiungere gestori eventi per eventi a livello di modulo solo dall'interfaccia utente in modalità progettazione di Microsoft Office InfoPath 2007. Quando si aggiunge un gestore eventi al modello di modulo dall'interfaccia utente in modalità progettazione, tramite InfoPath viene generato codice nel metodo InternalStartup del file di codice del modulo utilizzando la classe EventManager e il membro della classe FormEvents per associare l'evento al relativo gestore eventi. Per informazioni su come aggiungere gestori eventi in modalità progettazione di InfoPath, vedere Procedura: Aggiungere un gestore eventi.

L'evento ContextChanged viene associato utilizzando il delegato ContextChangedEventHandler.

Il nodo di contesto è il nodo XML mappato alla visualizzazione corrispondente al contenitore, o all'elemento, con la selezione XML corrente. Se, ad esempio, la selezione corrente nella visualizzazione è in una casella di testo, il nodo di contesto è il nodo a cui è associata la casella di testo. Se la sezione corrente è una sezione ripetuta, il nodo di contesto è il nodo per tale elemento. Se vengono selezionate due sezioni ripetute, il nodo di contesto è il nodo XML predecessore per entrambi gli elementi mappati alla visualizzazione.

L'evento ContextChanged è asincrono, ovvero non viene generato per ogni modifica del nodo di contesto, ma quando l'applicazione termina l'elaborazione di altri eventi.

Quando il documento XML sottostante viene caricato, o quando si verifica un cambio di visualizzazione, l'evento ContextChanged viene generato dopo gli eventi Loading e ViewSwitched.

Se la proprietà UndoRedo dell'oggetto ContextChangedEventArgs è true, la modifica del contesto è stata causata da un'operazione di annullamento o ripristino eseguita dall'utente piuttosto che da una modifica esplicita del contesto utente. È consigliabile evitare operazioni eseguite nell'evento ContextChanged per la modifica del documento XML sottostante in risposta a operazioni di annullamento o ripristino, in quanto tali operazioni potrebbero interferire con l'intenzione dell'utente di ripristinare i dati a uno stato precedente.

Per i controlli Casella di testo RTF, l'evento ContextChanged non viene generato per modifiche di contesto all'interno del contenuto XHTML, ovvero modifiche della selezione nel testo RTF all'interno del controllo. È possibile utilizzare il metodo GetContextNodes per determinare la selezione nei controlli Casella di testo RTF.

A questo tipo o membro può accedere solo il codice in esecuzione in moduli aperti in Microsoft Office InfoPath 2007.

Esempio

L'esempio seguente presuppone che il modulo disponga di un controllo Casella di testo associato a un campo denominato DisplayContext, nonché di controlli associati ad altri campi e gruppi nel modulo. Spostando la selezione in campi e gruppi diversi, viene visualizzato il nome del campo o del gruppo nel controllo Casella di testo associato al campo DisplayContext.

public void FormEvents_ContextChanged(object sender, 
   ContextChangedEventArgs e)
{
   if (e.ChangeType == "ContextNode")
   {
      // Position a XPathNavigator on the DisplayContext field.
      XPathNavigator root, txtbox;
      root = this.MainDataSource.CreateNavigator();
      txtbox = root.SelectSingleNode("/my:myFields/my:DisplayContext", 
         this.NamespaceManager);

      // Set DisplayContext with the name of the current context.
      txtbox.SetValue(e.Context.Name);
      return;
   }
}
Public Sub FormEvents_ContextChanged(ByVal sender As Object, _
   ByVal e As ContextChangedEventArgs)
   If (e.ChangeType = "ContextNode") Then
      ' Position a XPathNavigator on the DisplayContext field.
      Dim root, txtbox As XPathNavigator
      root = Me.MainDataSource.CreateNavigator
      txtbox = root.SelectSingleNode("/my:myFields/my:DisplayContext", 
         Me.NamespaceManager)

      ' Set DisplayContext with the name of the current context.
      txtbox.SetValue(e.Context.Name)
      Return
   End If
End Sub

Vedere anche

Riferimenti

Classe FormEvents
Membri FormEvents
Spazio dei nomi Microsoft.Office.InfoPath