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