XmlEvent.Changing 事件
在已經對表單的基礎 XML 文件進行變更之後,但尚未接受變更之前發生。
**命名空間:**Microsoft.Office.InfoPath
**組件:**Microsoft.Office.InfoPath (於 microsoft.office.infopath.dll 中)
語法
'宣告
Public Event Changing As XmlChangingEventHandler
'用途
Dim instance As XmlEvent
Dim handler As XmlChangingEventHandler
AddHandler instance.Changing, handler
public abstract event XmlChangingEventHandler Changing
例外狀況
例外狀況類型 | 條件 |
---|---|
開發人員嘗試在 InternalStartup 方法以外的其他位置中繫結事件。 |
|
InvalidOperationException |
開發人員嘗試將事件繫結到次要資料來源中的節點。次要資料來源不支援此事件。 |
備註
重要
Changing 事件並不是要由開發人員在表單程式碼中產生例項。當您從設計模式使用者介面中將事件處理常式新增至您的表單範本時,Microsoft Office InfoPath 2007 會使用 EventManager 類別,在表單程式碼檔案的 InternalStartup 方法中產生程式碼,並且使用 XmlEvent 類別的成員來將文件層級事件繫結至其事件處理常式。如需如何在 InfoPath 設計模式中新增事件處理常式的詳細資訊,請參閱操作方法:新增事件處理常式。
Changing 事件是使用 XmlChangingEventHandler 委派所繫結。
此事件處理常式允許使用者取消作業。
在 Changing 事件期間,表單的基礎 XML 文件為唯讀模式。如果 XmlChangingEventArgs.CancelableArgs.Cancel 屬性設定為 true,InfoPath 會拒絕已做的變更,並對使用者顯示訊息方塊。如果在程式碼中發生 Changing 事件的錯誤,InfoPath 會拒絕變更,並將資料還原成先前的狀態。
注意
最好避免在 Changing 事件期間切換檢視;在尚未接受變更之前,切換到其他檢視可能導致錯誤。
此類型或成員只能夠從 Microsoft Office InfoPath 2007 所開啟表單中執行的程式碼存取。
範例
在下列範例中,會在對 field2 進行變更時引發 Changing 事件,並使用 FormErrorCollection 類別的 Add 方法,將 field1 的 FormError 物件新增到表單的 FormErrorCollection 中。
這個動作可以讓錯誤訊息與 field1 產生關聯。當使用者將游標移到 field1 時,以 Add 方法之 message 參數傳遞的字串會顯示在工具提示中。在使用者以滑鼠右鍵按一下 field1,再按一下 [完整的錯誤描述] 時,InfoPath 便會顯示完整的錯誤訊息,包括當做 Add 方法之 messageDetails 參數傳遞的字串。
public void field2_Changing(object sender, XmlChangingEventArgs e)
{
XPathNavigator errNode =
this.CreateNavigator().SelectSingleNode("/my:myFields/my:field1",
NamespaceManager);
this.Errors.Add(errNode, "Field2Changing",
"The Changing event occurred for Field2.",
"Changes were made to Field2, but have not yet been accepted.");
}
Public Sub field2_Changing(ByVal sender As Object, _
ByVal e As XmlChangingEventArgs)
Dim errNode As XPathNavigator = Me.CreateNavigator(). _
SelectSingleNode("/my:myFields/my:field1", NamespaceManager)
Me.Errors.Add(errNode, "Field2Changing", _
"The Changing event occurred for Field2.", _
"Changes were made, but have not yet been accepted.")
End Sub