XObject.Changing Evento

Definición

Se genera cuando este XObject o cualquiera de sus descendientes está a punto de cambiar.

public:
 event EventHandler<System::Xml::Linq::XObjectChangeEventArgs ^> ^ Changing;
public event EventHandler<System.Xml.Linq.XObjectChangeEventArgs> Changing;
member this.Changing : EventHandler<System.Xml.Linq.XObjectChangeEventArgs> 
Public Custom Event Changing As EventHandler(Of XObjectChangeEventArgs) 

Tipo de evento

EventHandler<XObjectChangeEventArgs>

Ejemplos

En el ejemplo siguiente se agrega un controlador de eventos al elemento raíz de un árbol XML. A continuación, modifica el árbol, lo que hace que LINQ to XML genere algunos eventos.

XElement root = new XElement("Root", "content");  
root.Changing += new EventHandler<XObjectChangeEventArgs>(  
    (sender, cea) =>  
    {  
        Console.WriteLine("Changing event raised");  
        XElement xSender = (XElement)sender;  
        Console.WriteLine("  Sender: {0}", xSender.Name);  
        Console.WriteLine("  ObjectChange: {0}", cea.ObjectChange);  
    }  
);  
root.Changed += new EventHandler<XObjectChangeEventArgs>(  
    (sender, cea) =>  
    {  
        Console.WriteLine("Changed event raised");  
        XElement xSender = (XElement)sender;  
        Console.WriteLine("  Sender: {0}", xSender.Name);  
        Console.WriteLine("  ObjectChange: {0}", cea.ObjectChange);  
    }  
);  
root.Add(new XElement("Child", "child content"));  
Module Module1  
    WithEvents root As XElement = <Root>content</Root>  

    Sub Main()  
        root.Add(<Child>child content</Child>)  
    End Sub  

    Private Sub root_Changing( _  
            ByVal sender As Object, _  
            ByVal e As XObjectChangeEventArgs) _  
            Handles root.Changing  
        Dim xSender As XElement = CType(sender, XElement)  
        Console.WriteLine("Changing event raised")  
        Console.WriteLine("  Sender: {0}", xSender.Name)  
        Console.WriteLine("  ObjectChange: {0}", e.ObjectChange)  
    End Sub  

    Private Sub root_Changed( _  
            ByVal sender As Object, _  
            ByVal e As XObjectChangeEventArgs) _  
            Handles root.Changed  
        Dim xSender As XElement = CType(sender, XElement)  
        Console.WriteLine("Changed event raised")  
        Console.WriteLine("  Sender: {0}", xSender.Name)  
        Console.WriteLine("  ObjectChange: {0}", e.ObjectChange)  
    End Sub  
End Module  

Este ejemplo produce el siguiente resultado:

Changing event raised  
  Sender: Child  
  ObjectChange: Add  
Changed event raised  
  Sender: Child  
  ObjectChange: Add  

Comentarios

Los eventos solo se generan a partir de la modificación de un árbol XML, no de la construcción de un árbol XML. Tiene que agregar un controlador de eventos a un evento antes de poder recibir eventos y no puede agregar un controlador de eventos antes de tener una referencia a .XObject No se puede obtener una referencia a un XObject antes de que se construya el árbol XML. Esto significa que durante la construcción funcional de un árbol XML, no recibirá eventos.

Debe tener cuidado al modificar un árbol XML dentro de uno de estos eventos, ya que esto podría dar lugar a resultados inesperados. Por ejemplo, si recibe un Changing evento y mientras se procesa el evento, quite el nodo del árbol, es posible que no reciba el Changed evento. Cuando se procesa un evento, es válido modificar un árbol XML distinto del que contiene el nodo que recibe el evento; incluso es válido modificar el mismo árbol siempre que las modificaciones no afecten a los nodos específicos en los que se generó el evento. Sin embargo, si modifica el área del árbol que contiene el nodo que recibe el evento, los eventos que recibe y el impacto en el árbol no están definidos.

Se aplica a

Consulte también