XObject.Changing 이벤트

정의

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) 

이벤트 유형

EventHandler<XObjectChangeEventArgs>

예제

다음 예제에서는 XML 트리의 루트 요소에 이벤트 처리기를 추가 합니다.The following example adds an event handler to the root element of an XML tree. 그런 다음 트리를 수정 하 여 LINQ to 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. XObjectXML 트리를 생성 하기 전에에 대 한 참조를 가져올 수 없습니다.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.

적용 대상