FormEvents.Save イベント
ユーザー インターフェイスから [保存] コマンドまたは [名前を付けて保存] コマンドが使用されると、または Save メソッドおよび SaveAs メソッドが使用されると発生します。
名前空間: Microsoft.Office.InfoPath
アセンブリ: Microsoft.Office.InfoPath (Microsoft.Office.InfoPath.dll)
構文
'宣言
Public MustOverride Event Save As SaveEventHandler
'使用
Dim instance As FormEvents
Dim handler As SaveEventHandler
AddHandler instance.Save, handler
public abstract event SaveEventHandler Save
例外
例外 | 条件 |
---|---|
InvalidOperationException | 開発者は、InternalStartup メソッドとは異なる場所でイベントをバインドしようとしました。 |
解説
重要
Save イベントは、フォーム コードで開発者がインスタンス化するためのものではありません。開発者は、Microsoft InfoPath 2010 デザイン モード ユーザー インターフェイスからフォーム レベル イベントに対するイベント ハンドラーの追加だけを行います。デザイン モード ユーザー インターフェイスからフォーム テンプレートにイベント ハンドラーを追加すると、InfoPath は、EventManager クラスおよび FormEvents クラスのメンバーを使用してフォーム コード ファイルの InternalStartup メソッドにコードを生成し、イベントをイベント ハンドラーにバインドします。InfoPath のデザイン モードでイベント ハンドラーを追加する方法の詳細については、「[方法] イベント ハンドラーを追加する方法」を参照してください。
Save イベントは、フォーム テンプレートの [フォームのオプション] ダイアログ ボックスで [ユーザー設定コードを使って保存] オプションが設定されている場合にのみ発生します。
Save イベントは、SaveEventHandler デリゲートを使用してバインドされます。
SaveEventArgs クラスの CancelableArgs プロパティを使用して Cancel プロパティを true に設定することで、Save イベントを取り消せます。
Save イベントのイベント ハンドラーに対するパラメーターとして渡される SaveEventArgs オブジェクトが提供するプロパティとメソッドを使用すると、フォームのファイル名を取得し、保存状態を判別し、保存操作を実行することができます。
この型またはメンバーには、Microsoft InfoPath Filler で開かれたフォームを実行中のコードからのみアクセスできます。
例
次の例では、Save イベントのイベント ハンドラーは、Field2 が空かどうかを判別し、空でない場合は保存操作を実行します。空の場合は、メッセージを表示して保存操作を取り消します。
public void FormEvents_Save(object sender, SaveEventArgs e)
{
// Check to see if Field2 is empty.
XPathNavigator reqField =
CreateNavigator().SelectSingleNode("/my:myFields/my:field2",
NamespaceManager);
if(reqField.ToString() == "")
{
MessageBox.Show("Field2 is empty.\nYou cannot save the form.");
e.CancelableArg.Cancel = true;
}
else
{
// The Dirty property will be set to false if save is successful.
e.PerformSaveOperation();
e.CancelableArgs.Cancel = false;
}
}
Public Sub FormEvents_Save(ByVal sender As Object, _
ByVal e As SaveEventArgs)
' Check to see if Field2 is empty.
Dim reqField as XPathNavigator =
CreateNavigator().SelectSingleNode("/my:myFields/my:field2", _
NamespaceManager)
If(reqField.ToString() = "") Then
MessageBox.Show("Field2 is empty" & vbNewLine & _
"You cannot save the form.")
e.CancelableArgs.Cancel = True
Else
' The Dirty property will be set to false if save is successful.
e.PerformSaveOperation()
e.CancelableArgs.Cancel = False
End If
End Sub