次の方法で共有


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

関連項目

参照

FormEvents クラス

FormEvents メンバー

Microsoft.Office.InfoPath 名前空間