次の方法で共有


XmlEvent.Changing イベント

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

名前空間:  Microsoft.Office.InfoPath
アセンブリ:  Microsoft.Office.InfoPath (Microsoft.Office.InfoPath.dll)

構文

'宣言
Public MustOverride Event Changing As XmlChangingEventHandler
'使用
Dim instance As XmlEvent
Dim handler As XmlChangingEventHandler

AddHandler instance.Changing, handler
public abstract event XmlChangingEventHandler Changing

例外

例外 条件
InvalidOperationException

開発者は、InternalStartup メソッドとは異なる場所でイベントをバインドしようとしました。

InvalidOperationException

開発者は、セカンダリ データ ソースのノードにイベントをバインドしようとしました。このイベントは、セカンダリ データ ソースに対してはサポートされていません。

解説

重要

Changing イベントは、フォーム コードで開発者がインスタンス化するためのものではありません。デザイン モードのユーザー インターフェイスからフォーム テンプレートにイベント ハンドラーを追加すると、Microsoft InfoPath 2010 が EventManager クラスおよび XmlEvent クラスのメンバーを使用してフォーム コード ファイルの InternalStartup メソッドにコードを生成し、ドキュメント レベルのイベントをイベント ハンドラーにバインドします。 InfoPath のデザイン モードでイベント ハンドラーを追加する方法の詳細については、「[方法] イベント ハンドラーを追加する方法」を参照してください。

Changing イベントは、XmlChangingEventHandler デリゲートを使用してバインドされます。

このイベント ハンドラーでは、ユーザーが操作を取り消せます。

Changing イベントの間に、フォームの基になっている XML ドキュメントは読み取り専用のモードに設定されます。XmlChangingEventArgs.CancelableArgs.Cancel プロパティが true に設定されている場合、InfoPath は行われた変更を元に戻し、ユーザーに対してメッセージ ボックスを表示します。Changing イベントに対するコードでエラーが発生すると、InfoPath は変更を元に戻し、データを前の状態に戻します。

注意

Changing イベントの間はビューを切り替えないようにするのが最善の処理です。変更がまだ受け付けられていない状態で別のビューに切り替えると、エラーが発生します。

この型またはメンバーには、Microsoft InfoPath Filler で開かれたフォームを実行中のコードからのみアクセスできます。

次の例では、field2 が変更されると、Changing イベントが発生し、FormErrorCollection クラスの Add メソッドを使用して、field1 に対する FormError オブジェクトをフォームの FormErrorCollection に追加しています。

これにより、エラー メッセージと field1 が関連付けられます。Add メソッドの message パラメーターとして渡される文字列は、ユーザーが field1 をポイントするとヒントに表示されます。ユーザーが field1 を右クリックして [エラーの詳細情報] をクリックすると、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

関連項目

参照

XmlEvent クラス

XmlEvent メンバー

Microsoft.Office.InfoPath 名前空間