Прочитать на английском

Поделиться через


XObject.Changing Событие

Определение

Возникновение в случае возможного изменения данного XObject или одного из его подчиненных элементов.

public event EventHandler<System.Xml.Linq.XObjectChangeEventArgs> Changing;

Тип события

Примеры

В следующем примере обработчик событий добавляется в корневой элемент XML-дерева. Затем он изменяет дерево, в результате чего LINQ to XML вызывает некоторые события.

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"));  

В этом примере выводятся следующие данные:

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

Комментарии

События возникают только при изменении XML-дерева, а не при создании XML-дерева. Необходимо добавить обработчик событий в событие, прежде чем получать события, и вы не сможете добавить обработчик событий, прежде чем у вас будет ссылка на XObject. Невозможно получить ссылку на XObject до создания XML-дерева. Это означает, что во время функционального построения XML-дерева события не будут отображаться.

При изменении XML-дерева в одном из этих событий следует соблюдать осторожность, так как это может привести к непредвиденным результатам. Например, если вы получаете Changing событие и во время обработки события удаляете узел из дерева, событие может не получить Changed . При обработке события допустимо изменить XML-дерево, отличное от того, которое содержит узел, получающий событие; можно даже изменять то же дерево, если изменения не влияют на конкретные узлы, на которых было создано событие. Однако при изменении области дерева, содержащего узел, принимающий событие, полученные события и влияние на дерево будут неопределенными.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел