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 樹狀結構是有效的;即使修改的相同樹狀結構也有效,前提是修改不會影響引發事件的特定節點。 不過,如果您修改包含接收事件之節點的樹狀結構區域,您收到的事件和對樹狀結構的影響是未定義的。