Share via


FormEvents.ContextChanged - Événement

Se produit après une modification du nœud de contexte.

Espace de noms :  Microsoft.Office.InfoPath
Assembly :  Microsoft.Office.InfoPath (dans Microsoft.Office.InfoPath.dll)

Syntaxe

'Déclaration
Public MustOverride Event ContextChanged As ContextChangedEventHandler
'Utilisation
Dim instance As FormEvents
Dim handler As ContextChangedEventHandler

AddHandler instance.ContextChanged, handler
public abstract event ContextChangedEventHandler ContextChanged

Exceptions

Exception Condition
InvalidOperationException

Le développeur a tenté de lier l'événement dans un emplacement autre que la méthode InternalStartup.

Remarques

Important

L'événement ContextChanged n'est pas destiné à être instancié par le développeur dans le code de formulaire. Vous ne devez ajouter des gestionnaires d'événements pour les événements au niveau du formulaire qu'à partir de l'interface utilisateur Microsoft InfoPath en mode Création. Lorsque vous ajoutez un gestionnaire d'événements à votre modèle de formulaire à partir de l'interface utilisateur en mode Création, InfoPath génère du code dans la méthode InternalStartup du fichier de code de votre formulaire à l'aide de la classe EventManager et du membre de la classe FormEvents pour lier l'événement à son gestionnaire d'événements. Pour plus d'informations sur l'ajout de gestionnaires d'événements en mode Création dans InfoPath, consultez Procédure : Ajouter un gestionnaire d'événements.

L'événement ContextChanged est lié à l'aide du délégué ContextChangedEventHandler.

Le nœud de contexte est le nœud XML mappé sur la vue qui correspond au conteneur (ou à l'élément) associé à la sélection XML active. Par exemple, si la sélection active de la vue se trouve dans une zone de texte, le nœud de contexte représente le nœud auquel la zone de texte est liée. Si la sélection active est une section extensible, le nœud de contexte représente le nœud lié à cet élément. Si deux sections extensibles sont sélectionnées, le nœud de contexte est le nœud XML ancêtre des deux éléments mappés à la vue.

L'événement ContextChanged est asynchrone. Il ne se déclenche pas à chaque modification du nœud de contexte. En revanche, il se déclenche une fois que l'application a cessé de traiter les autres événements.

Lors du chargement du document XML sous-jacent ou lors d'un changement de vue, l'événement ContextChanged se produit après les événements Loading et ViewSwitched.

Lorsque la propriété UndoRedo de l'objet ContextChangedEventArgs a la valeur true, cela signifie que la modification du contexte est due à une opération d'annulation ou de rétablissement d'une action effectuée par un utilisateur plutôt qu'à une modification explicite du contexte utilisateur. Il est conseillé d'éviter d'effectuer des opérations qui modifient le document XML sous-jacent dans le cadre de l'événement ContextChanged en réponse à des opérations d'annulation ou de rétablissement, car elles risquent d'interférer avec l'intention de l'utilisateur de restaurer des données à un état antérieur.

Pour les contrôles Zone de texte enrichi, l'événement ContextChanged n'est pas déclenché en réponse à des modifications de contexte dans le contenu XHTML, à savoir en réponse à des modifications de sélection du texte enrichi dans le contrôle. La méthode GetContextNodes permet de déterminer la sélection contenue dans les contrôles Zones de texte enrichi.

Vous pouvez uniquement accéder à ce type ou à ce membre à partir du code exécuté dans les formulaires ouverts dans Microsoft InfoPath Filler.

Exemples

L'exemple suivant suppose que votre formulaire comprend un contrôle Zone de texte lié à un champ appelé DisplayContext ainsi que des contrôles liés aux autres champs et groupes du formulaire. Lorsque la sélection est appliquée à d'autres champs et groupes, le nom du champ ou du groupe en question s'affiche dans le contrôle Zone de texte lié au champ 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

Voir aussi

Référence

FormEvents classe

FormEvents - Membres

Microsoft.Office.InfoPath - Espace de noms