XObject.Changing Händelse
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Upphöjt när den här XObject eller någon av dess underordnade är på väg att ändras.
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)
Händelsetyp
Exempel
I följande exempel läggs en händelsehanterare till i rotelementet i ett XML-träd. Det ändrar sedan trädet, vilket gör att LINQ till XML genererar vissa händelser.
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
Det här exemplet genererar följande utdata:
Changing event raised
Sender: Child
ObjectChange: Add
Changed event raised
Sender: Child
ObjectChange: Add
Kommentarer
Händelser genereras endast från ändring av ett XML-träd, inte från konstruktion av ett XML-träd. Du måste lägga till en händelsehanterare i en händelse innan du kan ta emot händelser och du kan inte lägga till en händelsehanterare innan du har en referens till en XObject. Du kan inte hämta en referens till en XObject innan XML-trädet har konstruerats. Det innebär att du inte får händelser under funktionell konstruktion av ett XML-träd.
Du bör vara försiktig när du ändrar ett XML-träd inom någon av dessa händelser, eftersom detta kan leda till oväntade resultat. Om du till exempel får en Changing händelse och när händelsen bearbetas tar du bort noden från trädet, men du kanske inte får händelsen Changed . När en händelse bearbetas är det giltigt att ändra ett annat XML-träd än det som innehåller den nod som tar emot händelsen. Det är till och med giltigt att ändra samma träd, förutsatt att ändringarna inte påverkar de specifika noder som händelsen skapades på. Men om du ändrar området i trädet som innehåller noden som tar emot händelsen, är de händelser som du får och påverkan på trädet odefinierade.