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 ツリーの機能的な構築中は、イベントを受け取りません。
これらのイベントの 1 つ内で XML ツリーを変更する場合は、予期しない結果が発生する可能性があるため、注意が必要です。 たとえば、イベントを Changing 受信し、イベントの処理中にツリーからノードを削除した場合、イベントを Changed 受信しない可能性があります。 イベントが処理されている場合、イベントを受信しているノードを含む XML ツリー以外の XML ツリーを変更することは有効です。変更がイベントが発生した特定のノードに影響を与えない場合は、同じツリーを変更しても有効です。 ただし、イベントを受信するノードを含むツリーの領域を変更した場合、受け取るイベントとツリーへの影響は未定義になります。
適用対象
こちらもご覧ください
.NET