XObject.Changing Evento

Definição

Acionado quando esse XObject ou um de seus descendentes está prestes a mudar.Raised when this XObject or any of its descendants are about to change.

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>

Exemplos

O exemplo a seguir adiciona um manipulador de eventos ao elemento raiz de uma árvore XML.The following example adds an event handler to the root element of an XML tree. Em seguida, ele modifica a árvore, fazendo com que LINQ to XML gere alguns eventos.It then modifies the tree, causing LINQ to XML to raise some events.

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  

Esse exemplo gera a saída a seguir:This example produces the following output:

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

Comentários

Os eventos são gerados somente a partir da modificação de uma árvore XML, não da construção de uma árvore XML.Events are raised only from modification of an XML tree, not from construction of an XML tree. Você precisa adicionar um manipulador de eventos a um evento antes de receber eventos e não pode adicionar um manipulador de eventos antes de ter uma referência a um XObject .You have to add an event handler to an event before you can receive events, and you can't add an event handler before you have a reference to an XObject. Você não pode obter uma referência a um XObject antes de a árvore XML ser construída.You can't get a reference to an XObject before the XML tree is constructed. Isso significa que, durante a construção funcional de uma árvore XML, você não receberá eventos.This means that during functional construction of an XML tree, you will not receive events.

Você deve ter cuidado ao modificar uma árvore XML dentro de um desses eventos, pois isso pode levar a resultados inesperados.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Por exemplo, se você receber um Changing evento e, enquanto o evento estiver sendo processado, remover o nó da árvore, talvez você não receba o Changed evento.For example, if you receive a Changing event, and while the event is being processed you remove the node from the tree, you might not receive the Changed event. Quando um evento está sendo processado, é válido modificar uma árvore XML diferente daquela que contém o nó que está recebendo o evento; é mesmo válido modificar a mesma árvore, desde que as modificações não afetem os nós específicos em que o evento foi gerado.When an event is being processed, it is valid to modify an XML tree other than the one that contains the node that is receiving the event; it is even valid to modify the same tree provided the modifications do not affect the specific nodes on which the event was raised. No entanto, se você modificar a área da árvore que contém o nó que está recebendo o evento, os eventos recebidos e o impacto para a árvore serão indefinidos.However, if you modify the area of the tree that contains the node receiving the event, the events that you receive and the impact to the tree are undefined.

Aplica-se a