XObject.Changing XObject.Changing XObject.Changing XObject.Changing Event

定義

この XObject またはその子孫が変更される直前に発生します。Raised when this XObject or any of its descendants are about to change.

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) 

次の例では、XML ツリーのルート要素にイベント ハンドラーを追加します。The following example adds an event handler to the root element of an XML tree. LINQ の原因をいくつかのイベントを発生させる XML ツリーを変更します。It then modifies the tree, causing LINQ to XML to raise some events.

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  

この例を実行すると、次の出力が生成されます。This example produces the following output:

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

注釈

XML ツリーのコンストラクションではなく、XML ツリーの変更によってのみ、イベントが発生します。Events are raised only from modification of an XML tree, not from construction of an XML tree. イベントを受信してへの参照が生じる前に、イベント ハンドラーを追加することはできません前に、イベントにイベント ハンドラーを追加する必要がある、XObjectします。You have to add an event handler to an event before you can receive events, and you can't add an event handler before you have a reference to an XObject. 参照を取得することはできません、XObjectの前に、XML ツリーを構築します。You can't get a reference to an XObject before the XML tree is constructed. これは、XML ツリーの関数型構築中にはない受信されるイベントを意味します。This means that during functional construction of an XML tree, you will not receive events.

これを行うため、これらのイベントの内部で XML ツリーを変更するとき、注意する必要があります。You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. 表示された場合など、Changingイベント、イベントの処理中に、ツリーからノードを削除するを受け取っていない場合、Changedイベント。For example, if you receive a Changing event, and while the event is being processed you remove the node from the tree, you might not receive the Changed event. イベントが処理されている場合は、以外のイベントを受信しているノードを含む XML ツリーを変更するは無効指定の変更イベントが発生した特定のノードには影響しません、同じツリーを変更するのにも有効です。When an event is being processed, it is valid to modify an XML tree other than the one that contains the node that is receiving the event; it is even valid to modify the same tree provided the modifications do not affect the specific nodes on which the event was raised. ただし、イベントを受信するノードを含むツリーの領域を変更する場合に表示されるイベントと、ツリーへの影響は未定義です。However, if you modify the area of the tree that contains the node receiving the event, the events that you receive and the impact to the tree are undefined.

適用対象

こちらもご覧ください