XObject.Changing 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当此 XObject 或其任何子代要发生更改时引发。
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 树的根元素。 然后,它会修改树,导致 LINQ to XML 引发一些事件。
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
该示例产生下面的输出:
Changing event raised
Sender: Child
ObjectChange: Add
Changed event raised
Sender: Child
ObjectChange: Add
注解
事件仅从 XML 树的修改引发,而不是通过 XML 树的构造引发的。 必须先将事件处理程序添加到事件,然后才能接收事件,并且不能在引用 XObject之前添加事件处理程序。 在构造 XML 树之前,无法获取对 XObject 的引用。 这意味着在 XML 树的功能构造过程中,不会收到事件。
修改其中一个事件中的 XML 树时应小心,因为这样做可能会导致意外结果。 例如,如果收到事件 Changing ,并在处理事件时从树中删除节点,则可能不会收到该 Changed 事件。 处理事件时,修改 XML 树而不是包含接收事件的节点的 XML 树有效;修改同一树甚至有效,前提是修改不会影响引发事件的特定节点。 但是,如果修改包含接收事件的节点的树区域,则收到的事件和对树的影响是未定义的。