XObject.Changing Zdarzenie

Definicja

Uruchamiany, gdy XObject ten lub którykolwiek z jego obiektów podrzędnych zostanie zmieniony.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) 

Przykłady

Poniższy przykład dodaje procedurę obsługi zdarzeń do elementu głównego drzewa XML.The following example adds an event handler to the root element of an XML tree. Następnie modyfikuje drzewo, powodując LINQ to XML w celu wypróbowania niektórych zdarzeń.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  

Ten przykład generuje następujące wyniki:This example produces the following output:

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

Uwagi

Zdarzenia są wywoływane tylko w przypadku modyfikacji drzewa XML, a nie z konstrukcji drzewa XML.Events are raised only from modification of an XML tree, not from construction of an XML tree. Musisz dodać program obsługi zdarzeń do zdarzenia, zanim będzie można odbierać zdarzenia i nie możesz dodać obsługi zdarzeń przed odwołaniem do 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. Nie można pobrać odwołania do obiektu XObject , który nie jest konstruowany drzewo XML.You can't get a reference to an XObject before the XML tree is constructed. Oznacza to, że podczas funkcjonalnej konstrukcji drzewa XML nie będą odbierane zdarzenia.This means that during functional construction of an XML tree, you will not receive events.

Należy zachować ostrożność podczas modyfikowania drzewa XML w ramach jednego z tych zdarzeń, ponieważ może to prowadzić do nieoczekiwanych wyników.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Na przykład jeśli zostanie wyświetlone Changing zdarzenie, a podczas przetwarzania zdarzenia usuniesz węzeł z drzewa, możesz nie Changed odebrać zdarzenia.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. Gdy zdarzenie jest przetwarzane, prawidłowe jest zmodyfikowanie drzewa XML innego niż ten, który zawiera węzeł, który otrzymuje zdarzenie. Istnieje nawet możliwość modyfikacji tego samego drzewa pod warunkiem, że modyfikacje nie wpływają na określone węzły, w których zostało zgłoszone zdarzenie.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. Jednak w przypadku zmodyfikowania obszaru drzewa zawierającego węzeł odbierający zdarzenie zdarzenia, które otrzymujesz, i wpływ na drzewo, nie są zdefiniowane.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.

Dotyczy

Zobacz też