次の方法で共有


_DataDOMEventSink_Event.OnBeforeChange イベント

定義

フォームの基になっている XML ドキュメントへの変更が行われた後、変更が受け付けられる前に発生します。

public:
 event Microsoft::Office::Interop::InfoPath::SemiTrust::_DataDOMEventSink_OnBeforeChangeEventHandler ^ OnBeforeChange;
event Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnBeforeChangeEventHandler OnBeforeChange;
member this.OnBeforeChange : Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnBeforeChangeEventHandler 
Event OnBeforeChange As _DataDOMEventSink_OnBeforeChangeEventHandler 

イベントの種類

次の例では、OnBeforeChange イベント ハンドラーを使用して、フィールドのデータを検証します。 データが無効な場合、オブジェクトの プロパティをReturnStatusDataDOMEventObject使用して変更が拒否されます。

[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.<span class="label">OnBeforeChange</span>)]
public void RepVisitDt_<span class="label">OnBeforeChange</span>(DataDOMEvent e)
{
 IXMLDOMNode phone = thisXDocument.DOM.selectSingleNode    (@"/Customers/CustomerInfo/ContactDates/PhoneContactDt");
 if (phone.text == "")
 {
  e.ReturnMessage = "The Phone Contact Start date must be set prior to the Representative Visit date.";
  e.ReturnStatus = false;
  return;
 }
 // If the data is valid, eventObj.ReturnStatus = true.
 e.ReturnStatus = true;
 return;
}

次の例では、OnBeforeChange イベント ハンドラーを使用して、フィールドのデータを検証します。 データが無効な場合、オブジェクトの プロパティをReturnStatusDataDOMEventObject使用して変更が拒否されます。

[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.<span class="label">OnBeforeChange</span>)]
public void RepVisitDt_<span class="label">OnBeforeChange</span>(DataDOMEvent e)
{
 IXMLDOMNode phone = thisXDocument.DOM.selectSingleNode    (@"/Customers/CustomerInfo/ContactDates/PhoneContactDt");
 if (phone.text == "")
 {
  e.ReturnMessage = "The Phone Contact Start date must be set prior to the Representative Visit date.";
  e.ReturnStatus = false;
  return;
 }
 // If the data is valid, eventObj.ReturnStatus = true.
 e.ReturnStatus = true;
 return;
}

注釈

このイベント ハンドラーでは、ユーザーが DataDOM 操作を中止できます。

OnBeforeChange イベント中は、フォームの基になっている XML ドキュメントは読み取り専用モードになります。 オブジェクトの ReturnStatus プロパティが DataDOMEventObjectfalse に設定されている場合、Microsoft InfoPath は行われた変更を拒否し、メッセージ ボックスがユーザーに表示されます。 OnBeforeChange イベントのコード内でエラーが発生した場合、InfoPath は変更を拒否し、データを以前の状態に戻します。

: OnBeforeChange イベント中にビューが切り替わるのを避けるのが最善です。変更はまだ受け入れられていないので、別のビューに切り替えるとエラーが発生する可能性があります。

: 場合によっては、フォームの基になる XML ドキュメントの変更に関連するイベントが複数回発生することがあります。 たとえば、既存のデータが変更されると、挿入と削除の操作が発生します。

: OnBeforeChange イベントで検証エラーが発生した場合、ドキュメントの読み込みに失敗します。 イベントの try/catch ブロックを OnLoad 使用すると、この検証エラーをキャッチし、エラーにもかかわらずドキュメントを読み込むことができます。

適用対象