XObject.Changing 事件

定義

當此 XObject 或其任何子代發生變更時會引發。

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

事件類型

範例

下列範例會將事件處理常式新增至 XML 樹狀結構的根項目。 然後,它會修改樹狀結構,導致LINQ to XML引發某些事件。

C#
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 。 在建構 XML 樹狀結構之前,您無法取得 的參考 XObject 。 這表示在 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

另請參閱