次の方法で共有


_DataDOMEventSink_Event.OnBeforeChange イベント

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

名前空間: Microsoft.Office.Interop.InfoPath.SemiTrust
アセンブリ: Microsoft.Office.Interop.InfoPath.SemiTrust (microsoft.office.interop.infopath.semitrust.dll 内)

構文

'宣言
Event OnBeforeChange As _DataDOMEventSink_OnBeforeChangeEventHandler
'使用
Dim instance As _DataDOMEventSink_Event
Dim handler As _DataDOMEventSink_OnBeforeChangeEventHandler

AddHandler instance.OnBeforeChange, handler
event _DataDOMEventSink_OnBeforeChangeEventHandler OnBeforeChange

コメント

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

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

メモメモ :

OnBeforeChange イベント中は、ビューを切り替えないことをお勧めします。変更がまだ受け付けられていないため、別のビューに切り替えるとエラーが発生する可能性があります。

メモメモ :

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

メモメモ :

OnBeforeChange イベントで入力規則エラーが発生すると、ドキュメントの読み込みが失敗します。OnLoad イベントで try/catch ブロックを使用すると、入力規則エラーをキャッチして、エラーが発生した場合でもドキュメントを読み込むことができます。

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

[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.OnBeforeChange)]
public void RepVisitDt_OnBeforeChange(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;
}

関連項目

参照

_DataDOMEventSink_Event インターフェイス
_DataDOMEventSink_Event のメンバ
Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間