XObject.Changing Ereignis

Definition

Wird ausgelöst, wenn dieses XObject oder eines seiner untergeordneten Elemente gerade geändert wird.

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) 

Ereignistyp

Beispiele

Im folgenden Beispiel wird dem Stammelement einer XML-Struktur ein Ereignishandler hinzugefügt. Anschließend wird die Struktur geändert, sodass LINQ to XML einige Ereignisse auslöst.

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  

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Hinweise

Ereignisse werden nur durch die Änderung einer XML-Struktur ausgelöst, nicht durch die Konstruktion einer XML-Struktur. Sie müssen einem Ereignis einen Ereignishandler hinzufügen, bevor Sie Ereignisse empfangen können, und Sie können keinen Ereignishandler hinzufügen, bevor Sie einen Verweis auf einen XObjecthaben. Sie können keinen Verweis auf einen XObject abrufen, bevor die XML-Struktur erstellt wird. Dies bedeutet, dass Sie beim Funktionalen Aufbau einer XML-Struktur keine Ereignisse empfangen.

Sie sollten beim Ändern einer XML-Struktur innerhalb eines dieser Ereignisse vorsichtig sein, da dies zu unerwarteten Ergebnissen führen kann. Wenn Sie beispielsweise ein Changing Ereignis erhalten und während der Verarbeitung des Ereignisses Sie den Knoten aus der Struktur entfernen, erhalten Sie das Changed Ereignis möglicherweise nicht. Wenn ein Ereignis verarbeitet wird, ist es gültig, eine andere XML-Struktur als die zu ändern, die den Knoten enthält, der das Ereignis empfängt. Es ist sogar gültig, dieselbe Struktur zu ändern, vorausgesetzt, die Änderungen wirken sich nicht auf die spezifischen Knoten aus, auf denen das Ereignis ausgelöst wurde. Wenn Sie jedoch den Bereich der Struktur ändern, der den Knoten enthält, der das Ereignis empfängt, sind die empfangenen Ereignisse und die Auswirkungen auf die Struktur nicht definiert.

Gilt für:

Weitere Informationen