XObject.Changing Gebeurtenis

Definitie

Verhoogd wanneer deze XObject of een van zijn nakomelingen op het punt staat te veranderen.

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) 

Gebeurtenistype

Voorbeelden

In het volgende voorbeeld wordt een gebeurtenis-handler toegevoegd aan het hoofdelement van een XML-structuur. Vervolgens wordt de structuur gewijzigd, waardoor LINQ in XML bepaalde gebeurtenissen genereert.

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Opmerkingen

Gebeurtenissen worden alleen gegenereerd door wijzigingen van een XML-boomstructuur, niet van de constructie van een XML-structuur. U moet een gebeurtenis-handler toevoegen aan een gebeurtenis voordat u gebeurtenissen kunt ontvangen en u kunt geen gebeurtenis-handler toevoegen voordat u een verwijzing naar een XObjectgebeurtenis hebt. U kunt geen verwijzing naar een bestand XObject ophalen voordat de XML-structuur is samengesteld. Dit betekent dat u tijdens de functionele constructie van een XML-boomstructuur geen gebeurtenissen ontvangt.

U moet voorzichtig zijn bij het wijzigen van een XML-structuur binnen een van deze gebeurtenissen, omdat dit kan leiden tot onverwachte resultaten. Als u bijvoorbeeld een Changing gebeurtenis ontvangt en terwijl de gebeurtenis wordt verwerkt, verwijdert u het knooppunt uit de structuur, ontvangt u de Changed gebeurtenis mogelijk niet. Wanneer een gebeurtenis wordt verwerkt, is het geldig om een andere XML-boomstructuur te wijzigen dan de structuur die het knooppunt bevat dat de gebeurtenis ontvangt; het is zelfs geldig om dezelfde structuur te wijzigen, mits de wijzigingen geen invloed hebben op de specifieke knooppunten waarop de gebeurtenis is gegenereerd. Als u echter het gebied van de structuur wijzigt dat het knooppunt bevat dat de gebeurtenis ontvangt, zijn de gebeurtenissen die u ontvangt en de impact op de structuur niet gedefinieerd.

Van toepassing op

Zie ook