Well, you could capture the data on your form and then pass it over to the BrowseDialog by setting the SearchField values or by passing it into the InitialSearchValue. The latter gets a bit more complex but will give you the ultimate control over the search values coming in. When you call the ShowDialog, there is an option to pass in initial search values, but when you do this you will need to override the ParseInitialValue method on the BrowseDialog (which means that you will need to be inheriting the BrowseDialog) and then add your logic.
In the below example, you can get an idea of how to implement this:
''' <summary>
''' Determines how to parse the initial value string
''' </summary>
''' <param name="initialValue"></param>
''' <returns></returns>
''' <remarks></remarks>
Protected Overrides Function ParseInitialValue(ByVal initialValue As String) As Boolean
'-- Establish Locals
Dim parts() As String
'-- Determine if there is anything to parse
If initialValue.Trim().Length <> 0 Then
'-- If something was passed, then the type is being filtered so we don't want to let the end-user choose
' the type in the criteria.
Me.SearchFields("cc_Type").InitiallyEnabled = False
'-- Get the values into an array. The are separated by a comma in this example.
parts = initialValue.Split(","c)
'-- Set the part values. These are just privates in this class that I will use later in the OnSearching method
' to provide additiona query logic.
_AllowAutoCodes = Boolean.Parse(parts(0))
_AllowCpt = Boolean.Parse(parts(1))
_AllowSupplies = Boolean.Parse(parts(2))
_UpdateSearch = True
End If
'-- By returning False, the browse will not automatically perform a search. In this case, we just wanted to
' setup the control, so do not automatically perform the query. You would probably want to set all of your search logic
' and return True to execute the query.
Return False
End Function