FormEvents.ContextChanged Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt nach der Änderung des Kontextknotens ein.
public:
abstract event Microsoft::Office::InfoPath::ContextChangedEventHandler ^ ContextChanged;
public abstract event Microsoft.Office.InfoPath.ContextChangedEventHandler ContextChanged;
member this.ContextChanged : Microsoft.Office.InfoPath.ContextChangedEventHandler
Public MustOverride Custom Event ContextChanged As ContextChangedEventHandler
Ereignistyp
Ausnahmen
Es wurde versucht, das Ereignis an einen anderen Speicherort als die InternalStartup-Methode zu binden.
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
Hinweise
Wichtig: Das ContextChanged-Ereignis soll nicht vom Entwickler im Formularcode instanziiert werden. Sie sollten nur Ereignishandler für Ereignisse auf Formularebene über die Benutzeroberfläche des Microsoft InfoPath-Entwurfsmodus hinzufügen. Wenn Sie ihrer Formularvorlage über die Benutzeroberfläche des Entwurfsmodus einen Ereignishandler hinzufügen, generiert InfoPath Code in der InternalStartup-Methode Ihrer Formularcodedatei mithilfe der EventManager -Klasse und des Members der FormEvents -Klasse, um das Ereignis an ihren Ereignishandler zu binden. Weitere Informationen zum Hinzufügen von Ereignishandlern im InfoPath-Entwurfsmodus finden Sie unter Vorgehensweise: Hinzufügen eines Ereignishandlers.
Das ContextChanged-Ereignis wird mithilfe des ContextChangedEventHandler Delegaten gebunden.
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.
Wenn das zugrunde liegende XML-Dokument geladen wird oder eine Ansichtsänderung auftritt, tritt das ContextChanged-Ereignis nach dem Auftreten der Loading Ereignisse und ViewSwitched auf.
Wenn die UndoRedo -Eigenschaft des ContextChangedEventArgs Objekts true ist, wurde die Kontextänderung durch den Rückgängig- oder Wiederholungsvorgang eines Benutzers verursacht, anstatt durch eine explizite Änderung des Benutzerkontexts. 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. Die GetContextNodes() -Methode kann verwendet werden, um die Auswahl in Rich Text Box-Steuerelementen zu bestimmen.
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.