_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 事件处理程序用于验证域中的数据。 如果数据无效, ReturnStatus 则对象的 属性 DataDOMEventObject 用于拒绝更改。

[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 事件处理程序用于验证域中的数据。 如果数据无效, ReturnStatus 则对象的 属性 DataDOMEventObject 用于拒绝更改。

[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 事件期间,将表单的基础 XML 文档设置为只读模式。 ReturnStatus如果 对象的 属性DataDOMEventObject设置为 false,则 Microsoft InfoPath 将拒绝所做的更改,并向用户显示一个消息框。 如果 OnBeforeChange 事件的代码中发生了错误,则 InfoPath 将拒绝更改,并将数据还原到以前的状态。

注意:最好避免在 OnBeforeChange 事件期间切换视图;尚未接受更改,切换到另一个视图可能会导致错误。

注意:在某些情况下,与窗体的基础 XML 文档中的更改相关的事件可能会多次发生。 例如,在更改现有数据后,将发生插入和删除操作。

注意:如果在 OnBeforeChange 事件中遇到验证错误,则无法加载文档。 事件中的 OnLoad try/catch 块可用于捕获此验证失败并加载文档(尽管存在错误)。

适用于