2

モーダル ポップアップ ヘルパー フォームを開いてデータを収集するフォームがあります。このモーダル ポップアップ フォームが閉じると、フォーカスはメイン フォームに戻ります。フォーカスがメイン フォームに戻ったときに、何らかのアクティビティをトリガーしたいと考えています。

フォームのイベント モデルは、 Microsoft のドキュメントに従って、モデル ポップアップから戻るときにForm_Activateまたはイベントをトリガーしません。Form_GotFocus

これらのフォームとすべてのコントロールは完全にバインドされていません。

フォーカスがフォームに戻ったときにコードで知るためのトリックはありますか?

両方のフォームが通常モードに配置されてForm_Activateいる場合、ヘルパー フォームが閉じたときにプライマリ フォームで起動しますが、これは私のニーズを満たしていません。これをトラップする同様のイベントを見つけることができませんでした。誰かが回避策を持っていることを願っています。

4

1 に答える 1

2

わかりやすくするために、私が遭遇した問題は、ヘルパー フォームのデザイン時のプロパティがダイアログとして機能するように設定されていたことです (ポップアップとモーダルは true)。acDialogメイン フォームのボタン クリック イベントに応答するフォームを開いたときに、オプションが含まれていませんでした。

設定を省略するとWindowMode=acDialog、コードは非同期で動作し、クリック イベント ハンドラーのコードを完全に完了し、停止したり待機したりしません。

このacDialogオプションは明らかに、DoCmd.OpenFormコマンドを強制的に同期的に実行し、コードの実行を停止し、モーダル フォームが閉じられると元に戻ります。

    Private Sub btnHelper_Click()

        DoCmd.OpenForm "frmHelper", WindowMode:=acDialog

        'Do stuff after frmHelper closes

    End Sub
于 2016-08-29T18:51:21.870 に答える