FormEvents.Merge イベント
[フォームの結合] コマンドがユーザー インターフェイスから起動されると、または /aggregate コマンド ライン スイッチを指定して InfoPath が開始されると発生します。
名前空間: Microsoft.Office.InfoPath
アセンブリ: Microsoft.Office.InfoPath (microsoft.office.infopath.dll 内)
構文
'宣言
Public Event Merge As MergeEventHandler
'使用
Dim instance As FormEvents
Dim handler As MergeEventHandler
AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge
例外処理
例外の種類 | 条件 |
---|---|
開発者は、InternalStartup メソッドとは異なる場所でイベントをバインドしようとしました。 |
コメント
重要 : |
---|
Merge イベントは、フォーム コードで開発者がインスタンス化するためのものではありません。開発者は、Microsoft Office InfoPath 2007 デザイン モード ユーザー インターフェイスからフォーム レベル イベントに対するイベント ハンドラの追加だけを行います。デザイン モード ユーザー インターフェイスからフォーム テンプレートにイベント ハンドラを追加すると、InfoPath は、EventManager クラスおよび FormEvents クラスのメンバを使用してフォーム コード ファイルの InternalStartup メソッドにコードを生成し、イベントをイベント ハンドラにバインドします。InfoPath のデザイン モードでイベント ハンドラを追加する方法の詳細については、「[方法] イベント ハンドラを追加する方法」を参照してください。 |
Merge イベントは、MergeEventHandler 代理を使用してバインドされます。
MergeEventArgs クラスの CancelableArgs プロパティを使用して Cancel プロパティを true に設定することで、Merge イベントをキャンセルできます。
イベントをキャンセルした場合の InfoPath の動作は、Message プロパティと MessageDetails プロパティの設定に応じて、次の表のようになります。
Message および MessageDetails の設定 |
表示されるダイアログ ボックスとテキスト |
---|---|
Message プロパティだけにメッセージ文字列が設定されている。 |
設定されているメッセージと "続行しますか?" というメッセージ、および [はい]、[すべてにはい]、[キャンセル] の各ボタン。 |
MessageDetails プロパティだけにメッセージ文字列が設定されている。 |
"次のフォームの結合時にエラーが発生しました : フォーム名.xml。" というメッセージと設定されている詳細メッセージ、および [はい]、[すべてにはい]、[キャンセル] の各ボタン。 |
Message プロパティと MessageDetails プロパティの両方にメッセージ文字列が設定されている。 |
設定されているメッセージと詳細メッセージ、および [はい]、[すべてにはい]、[キャンセル] の各ボタン。 |
Message プロパティと MessageDetails プロパティに設定しない。または、両方に null または空の文字列を設定する。 |
ダイアログ ボックスは表示されません。 |
ユーザーが [はい]、[すべてにはい]、[キャンセル] の各ボタンをクリックしたときの動作は次のとおりです。
クリックしたボタン |
結合動作 |
---|---|
[はい] ボタン |
結合動作が行われ、ユーザーは結合される個別のフォームごとに [はい] をクリックする必要があります。 |
[すべてにはい] ボタン |
結合動作が行われ、選択されているすべてのフォームが結合されます。 |
[キャンセル] ボタン |
すべてのフォームの結合がキャンセルされます。[キャンセル] をクリックする前にいずれかのフォームに対して [はい] をクリックした場合は、これらのフォームの結合もキャンセルされます。 |
MergeEventArgs オブジェクトは、フォームの Merge イベントのイベント ハンドラに対するパラメータとして渡されます。MergeEventArgs オブジェクトが提供するプロパティを Merge イベントの間に使用すると、フォームの基になっている XML ドキュメントとプログラム的に対話して、結合するファイルの数などの結合プロパティを判別できます。MergeEventArgs オブジェクトが提供するプロパティは、このイベントの間にだけ使用できます。
単一のフォーム結合操作の間、Merge イベントは結合されるファイルごとに 1 回ずつ発生し、そのイベント ハンドラのコードが実行されます。
重要 : |
---|
InfoPath 2003 オブジェクト モデルには、結合操作が完了した後に発生する OnAfterImport イベントがあります。Microsoft Office InfoPath 2007 オブジェクト モデルにも同等のイベントがあります。これと同じ機能は、Merge イベントのイベント ハンドラでも実現できます。それには、"結合後" の操作を実行する前に、MergeEventArgs クラスの Index プロパティと Count プロパティの値を比較して、結合操作が完了したことを確認します。 |
この型またはメンバは、Microsoft Office InfoPath 2007 で開いているフォームで実行されているコードからのみアクセスできます。
例
次の例では、Merge イベントのイベント ハンドラは、結合操作の状態を示す変数を設定し、XmlForm クラスの MergeForm(XPathNavigator) メソッドを呼び出して結合操作を実行し、結合が終了するとメッセージを表示します。
private bool _merging = false;
public void FormEvents_Merge(object sender, MergeEventArgs e)
{
// Set global property to indicate that forms are being merged.
if (e.Index == 0)
{
_merging = true;
}
// Merge the current form.
MergeForm(e.Xml);
e.CancelableArgs.Cancel = false;
// Check to see if merging is finished.
if ((e.Index + 1) == e.Count)
{
_merging = false;
MessageBox.Show("Your request to merge " + e.Count +
" files is now complete.");
// Perform any "after merge" operations here.
}
}
Private _merging As Boolean = False
Public Sub FormEvents_Merge(ByVal sender As Object, _
ByVal e As MergeEventArgs)
' Set global property to indicate that forms are being merged.
If (e.Index = 0) Then
_merging = True
End If
' Merge the current form.
MergeForm(e.Xml)
e.CancelableArgs.Cancel = False
' Check to see if merging is finished.
If ((e.Index + 1) = e.Count) Then
_merging = False
MessageBox.Show("Your request to merge " + e.Count +
" files is now complete.")
' Perform any "after merge" operations here.
End If
End Sub
関連項目
参照
FormEvents クラス
FormEvents のメンバ
Microsoft.Office.InfoPath 名前空間