Hi Ben,
I can tell you what we have decided to do and it seems to work ok so far. We do a call to a 'populate' sub from within FormLoad. This has the advantages:
1) We can easily set any default data selection criteria, e.g. just show transactions for last 3 days, before 'populate' is called.
2) These data selection criteria defaults can be, of course, be form specific rather than an arbitrary values selected for the BO itself which makes the BO easier to reuse.
3) If we have a 'refresh' button on the form (normally we do) then clicking 'refresh' simply calls the 'populate' sub. This would be done of course if the user changes the data selection criteria, e.g. all transactions for last month.
This being said we also use ParentFormLoading for all our lookup BO's that will be needed on a form, i.e. those that populate selection list like combo boxes. Then all we need to do with lookup BOs is drop them onto a form and use as needed. Actually we use a little trick on that side of things. We put the stored procedure name that is used to populate the BO into the UpdateStoredProcedureName property then, all our lookup BO's have identical ParentFormLoading code:
Private Sub boluSPC_ParentFormLoading() Handles Me.ParentFormLoading
If Me.UpdateStoredProcedureName.Length > 1 Then
Me.FillByStoredProcedure(Me.UpdateStoredProcedureName.ToString)
End If
End Sub
We actually use this approach in our main BOs as well. It means we can use more boilerplate code.
Cheers, Peter