XObject.Changing Ereignis

Definition

Wird ausgelöst, wenn sich dies XObject oder eines seiner Nachfolger ändert.

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, wodurch 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 aus der Änderung einer XML-Struktur ausgelöst, nicht aus der Erstellung 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 XObject. Sie können keinen Verweis auf eine XObject Referenz abrufen, bevor die XML-Struktur erstellt wird. Dies bedeutet, dass Während der funktionalen Konstruktion einer XML-Struktur keine Ereignisse empfangen werden.

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 empfangen und das Ereignis verarbeitet wird, entfernen Sie den Knoten möglicherweise nicht Changed aus der Struktur. Wenn ein Ereignis verarbeitet wird, ist es gültig, eine andere XML-Struktur zu ändern als die, die den Knoten enthält, der das Ereignis empfängt; Es ist sogar gültig, die gleiche 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