XObject.Changing Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Déclenché lorsque ce XObject ou l'un de ses descendants est sur le point de changer.
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)
Type d'événement
Exemples
L’exemple suivant ajoute un gestionnaire d’événements à l’élément racine d’une arborescence XML. Il modifie ensuite l’arborescence, ce qui entraîne LINQ to XML de déclencher certains événements.
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
Cet exemple produit la sortie suivante :
Changing event raised
Sender: Child
ObjectChange: Add
Changed event raised
Sender: Child
ObjectChange: Add
Remarques
Les événements sont déclenchés uniquement à partir de la modification d’une arborescence XML, et non de la construction d’une arborescence XML. Vous devez ajouter un gestionnaire d’événements à un événement avant de pouvoir recevoir des événements, et vous ne pouvez pas ajouter de gestionnaire d’événements avant d’avoir une référence à un XObject. Vous ne pouvez pas obtenir une référence à un avant la construction de XObject l’arborescence XML. Cela signifie que lors de la construction fonctionnelle d’une arborescence XML, vous ne recevrez pas d’événements.
Vous devez être prudent lors de la modification d’une arborescence XML dans l’un de ces événements, car cela peut entraîner des résultats inattendus. Par exemple, si vous recevez un Changing événement et que pendant le traitement de l’événement, vous supprimez le nœud de l’arborescence, il se peut que vous ne receviez pas l’événement Changed . Lorsqu’un événement est en cours de traitement, il est valide de modifier une arborescence XML autre que celle qui contient le nœud qui reçoit l’événement ; il est même valide de modifier la même arborescence, à condition que les modifications n’affectent pas les nœuds spécifiques sur lesquels l’événement a été déclenché. Toutefois, si vous modifiez la zone de l’arborescence qui contient le nœud recevant l’événement, les événements que vous recevez et l’impact sur l’arborescence ne sont pas définis.