XObject.Changing Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bu XObject veya onun alt öğelerinden herhangi biri değişmek üzereyken yükseltilir.
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)
Olay Türü
Örnekler
Aşağıdaki örnek, xml ağacının kök öğesine bir olay işleyicisi ekler. Daha sonra ağacı değiştirerek LINQ to XML bazı olayları tetiklesine neden olur.
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
Bu örnek aşağıdaki çıkışı oluşturur:
Changing event raised
Sender: Child
ObjectChange: Add
Changed event raised
Sender: Child
ObjectChange: Add
Açıklamalar
Olaylar yalnızca XML ağacının değiştirilmesinden oluşturulur, XML ağacının oluşturulmasından tetiklenmez. Olayları alabilmeniz için önce bir olaya olay işleyicisi eklemeniz gerekir ve bir başvuruya XObjectsahip olmadan önce bir olay işleyicisi ekleyemezsiniz. XML ağacı oluşturmadan önce öğesine XObject başvuru alamazsınız. Başka bir deyişle, XML ağacının işlevsel yapısı sırasında olayları almazsınız.
Bu olaylardan birinin içindeki XML ağacını değiştirirken dikkatli olmanız gerekir, çünkü bunu yapmak beklenmeyen sonuçlara yol açabilir. Örneğin, bir Changing olay alırsanız ve olay işlenirken düğümü ağaçtan kaldırırsanız, olayı almayabilirsiniz Changed . Bir olay işlenirken, olayı alan düğümü içerenden başka bir XML ağacını değiştirmek geçerli olur; Değişikliklerin olayın oluşturulduğu belirli düğümleri etkilememesi koşuluyla aynı ağacı değiştirmek bile geçerlidir. Ancak, olayı alan düğümü içeren ağaç alanını değiştirirseniz, aldığınız olaylar ve ağaç üzerindeki etkisi tanımsız olur.