FormEvents.ContextChanged-Ereignis

Tritt nach der Änderung des Kontextknotens ein.

Namespace:  Microsoft.Office.InfoPath
Assembly:  Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)

Syntax

'Declaration
Public MustOverride Event ContextChanged As ContextChangedEventHandler
'Usage
Dim instance As FormEvents
Dim handler As ContextChangedEventHandler

AddHandler instance.ContextChanged, handler
public abstract event ContextChangedEventHandler ContextChanged

Ausnahmen

Ausnahme Bedingung
InvalidOperationException

Es wurde versucht, das Ereignis an einen anderen Speicherort als die InternalStartup-Methode zu binden.

Hinweise

Wichtig

Das ContextChanged-Ereignis sollte nicht vom Entwickler im Formularcode instanziiert werden. Ereignishandler für Ereignisse auf Formularebene sollten nur über die Microsoft InfoPath-Entwurfsmodus-Benutzeroberfläche hinzugefügt werden. Wenn Sie der Formularvorlage über die Entwurfsmodus-Benutzeroberfläche einen Ereignishandler hinzufügen, wird in InfoPath mithilfe der EventManager-Klasse und des Members der FormEvents-Klasse in der InternalStartup-Methode der Formularcodedatei Code generiert, um das Ereignis an den zugehörigen Ereignishandler zu binden. Weitere Informationen zum Hinzufügen von Ereignishandlern im InfoPath-Entwurfsmodus finden Sie unter Vorgehensweise: Hinzufügen eines Ereignishandlers.

Die Bindung des ContextChanged-Ereignisses erfolgt mithilfe des ContextChangedEventHandler-Delegaten.

Der Kontextknoten ist der XML-Knoten, der der Ansicht zugeordnet ist, die dem Container (oder Element) mit der aktuellen XML-Auswahl zugeordnet ist. Wenn sich die aktuelle Auswahl in der Ansicht z. B. in einem Textfeld befindet, ist der Kontextknoten der Knoten, an den das Textfeld gebunden ist. Wenn die aktuelle Auswahl ein wiederholter Abschnitt ist, ist der Kontextknoten der Knoten für dieses Element. Wenn zwei wiederholte Abschnitte ausgewählt wurden, ist der Kontextknoten der übergeordnete XML-Knoten beider Elemente, die der Ansicht zugeordnet sind.

Das ContextChanged-Ereignis ist asynchron. Es wird nicht bei jeder Änderung im Kontextknoten ausgelöst, sondern nur dann, wenn die Anwendung die Verarbeitung anderer Ereignisse abgeschlossen hat.

Beim Laden des zugrunde liegenden XML-Dokuments oder beim Wechsel von Ansichten tritt das ContextChanged-Ereignis nach den Loading- und ViewSwitched-Ereignissen ein.

Wenn die UndoRedo-Eigenschaft des ContextChangedEventArgs-Objekts den Wert true aufweist, wurde die Kontextänderung durch den Vorgang zum Rückgängigmachen oder Wiederholen eines Benutzers anstelle einer expliziten Benutzerkontextänderung ausgelöst. Vorgänge im ContextChanged-Ereignis, die das zugrunde liegende XML-Dokument ändern, sollten als Reaktion auf Vorgänge zum Rückgängigmachen oder Wiederholen vermieden werden, da sie möglicherweise im Gegensatz zur der Absicht eines Benutzers stehen, Daten in einen früheren Zustand zurückzuversetzen.

Bei Steuerelementen für Rich-Text-Felder wird das ContextChanged-Ereignis nicht bei Kontextänderungen im XHTML-Inhalt, also Auswahländerungen am Rich-Text im Steuerelement, ausgelöst. Mithilfe der GetContextNodes-Methode kann die Auswahl innerhalb von Steuerelementen für Rich-Text-Felder bestimmt werden.

Auf diesen Typ oder dieses Mitglied kann nur über Code zugegriffen werden, der in Formularen ausgeführt wird, die in Microsoft InfoPath Filler geöffnet wurden.

Beispiele

Im folgenden Beispiel wird davon ausgegangen, dass das Formular über ein Textfeld-Steuerelement verfügt, das an das Feld DisplayContext gebunden ist, sowie über Steuerelemente, die im Formular an andere Felder und Gruppen gebunden sind. Beim Verschieben der Auswahl zu anderen Feldern und Gruppen wird der Name des Feldes oder der Gruppe im Textfeld mit Bindung an DisplayContext angezeigt.

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

Siehe auch

Referenz

FormEvents Klasse

FormEvents-Member

Microsoft.Office.InfoPath-Namespace