Share via


XObject.Changing Kejadian

Definisi

Dimunculkan ketika ini XObject atau salah satu keturunannya akan berubah.

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) 

Jenis Acara

Contoh

Contoh berikut menambahkan penanganan aktivitas ke elemen akar pohon XML. Kemudian memodifikasi pohon, menyebabkan LINQ ke XML menaikkan beberapa peristiwa.

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  

Contoh ini mencetak output berikut:

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

Keterangan

Peristiwa hanya dimunculkan dari modifikasi pohon XML, bukan dari konstruksi pohon XML. Anda harus menambahkan penanganan aktivitas ke peristiwa sebelum dapat menerima peristiwa, dan Anda tidak dapat menambahkan penanganan aktivitas sebelum Anda memiliki referensi ke XObject. Anda tidak bisa mendapatkan referensi ke XObject sebelum pohon XML dibangun. Ini berarti bahwa selama konstruksi fungsional pohon XML, Anda tidak akan menerima peristiwa.

Anda harus berhati-hati saat memodifikasi pohon XML dalam salah satu peristiwa ini, karena melakukan ini dapat menyebabkan hasil yang tidak terduga. Misalnya, jika Anda menerima Changing peristiwa, dan saat peristiwa sedang diproses, Anda menghapus simpul dari pohon, Anda mungkin tidak menerima peristiwa tersebut Changed . Saat peristiwa sedang diproses, valid untuk memodifikasi pohon XML selain yang berisi simpul yang menerima peristiwa; bahkan valid untuk memodifikasi pohon yang sama asalkan modifikasi tidak memengaruhi simpul tertentu tempat peristiwa dimunculkan. Namun, jika Anda memodifikasi area pohon yang berisi simpul yang menerima peristiwa, peristiwa yang Anda terima dan dampaknya ke pohon tidak ditentukan.

Berlaku untuk

Lihat juga