XObject.Changing Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.