FormEvents.ContextChanged Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce después de que cambie el nodo de contexto.
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
Tipo de evento
Excepciones
El programador intentó enlazar el evento en una ubicación que no es el método InternalStartup.
Ejemplos
En el siguiente ejemplo se supone que el formulario tiene un control de Cuadro de texto enlazado a un campo llamado DisplayContext, además de controles enlazados a otros campos y grupos del formulario. Si se mueve la selección a otros campos y grupos se muestra el nombre del campo o grupo en el control Cuadro de texto enlazado a 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
Comentarios
Importante: El evento ContextChanged no está pensado para que el desarrollador cree instancias en el código de formulario. Solo debe agregar controladores de eventos para eventos de nivel de formulario desde la interfaz de usuario del modo de diseño de Microsoft InfoPath. Al agregar un controlador de eventos a la plantilla de formulario desde la interfaz de usuario del modo de diseño, InfoPath genera código en el método InternalStartup del archivo de código de formulario mediante la EventManager clase y el miembro de la FormEvents clase para enlazar el evento a su controlador de eventos. Para obtener información sobre cómo agregar controladores de eventos en el modo de diseño de InfoPath, vea Cómo agregar un controlador de eventos.
El evento ContextChanged se enlaza mediante el ContextChangedEventHandler delegado.
El nodo de contexto es el nodo XML asignado a la vista que corresponde al contenedor (o elemento) con la selección XML actual. Por ejemplo, si la selección actual en la vista se encuentra en un cuadro de texto, el nodo de contexto será el nodo al que esté enlazado el cuadro de texto. Si la selección actual es una sección extensible, el nodo de contexto será el nodo de ese elemento. Si se seleccionan dos secciones extensibles, el nodo de contexto será el nodo XML primario de ambos elementos asignado a esa vista.
El evento ContextChanged es asincrónico. No se activa con cada cambio del nodo de contexto, sino que se inicia una vez que la aplicación ha terminado de procesar otros eventos.
Cuando se carga el documento XML subyacente, o cuando se produce un cambio de vista, el evento ContextChanged se producirá después de que se produzcan los Loading eventos y ViewSwitched .
Cuando la UndoRedo propiedad del ContextChangedEventArgs objeto es true, el cambio de contexto se produjo por la operación de deshacer o rehacer de un usuario en lugar de un cambio explícito del contexto de usuario. Deberían evitarse las operaciones realizadas en el evento ContextChanged que modifica el documento XML subyacente en respuesta a operaciones deshacer o rehacer, ya que pueden interferir con las intenciones del usuario de revertir datos a su estado anterior.
En el caso de controles de Cuadro de texto enriquecido, el evento ContextChanged no se inicia en los cambios de contexto dentro del contenido XHTML, es decir, en los cambios de selección del texto enriquecido del control. El GetContextNodes() método se puede usar para determinar la selección dentro de los controles de cuadro de texto enriquecido.
Únicamente se puede acceder a este tipo o miembro desde el código que se ejecuta en los formularios abiertos en Microsoft InfoPath Filler.